#help-development

1 messages · Page 548 of 1

mortal hare
#

it becomes rvalue

#

and you cant use this anymore

fluid river
#

basically what & always did ig

mortal hare
#

(object++)++ wouldnt work

hazy parrot
#

ah, good to know

#

always trough increment is basically +

#

reason why you cant override ++ in c# for example

hazy parrot
hazy parrot
mortal hare
#

&variable -> memory address
int & -> lvalue reference
int && -> rvalue reference
const int & -> in function args it accepts both lvalue and rvalue
& {} -> only lvalue permitted to execute this block

#

ampersand in cpp is like in english

#

many definitions for the same word

fierce salmon
#

https://paste.md-5.net/bojimugexa.cs I am trying to make my plugin tell how long it takes to go from one pressure plate to another. Instead of giving a normal time, it gives something like 1.64598321321E12.

mortal hare
#

that's some yandere i've seen today

fierce salmon
#

define yandere?

mortal hare
#

not to insult but your code looks a bit messy

#

spaghetti code

#

to be exact

dusk flicker
#

oh my lord

fierce salmon
#

i dont mind it being messy as long as it works lol

dusk flicker
#

have fun debugging that

fierce salmon
#

not too difficult to debug imo

mortal hare
#

where do you measure time

#

in this

#

found it

fierce salmon
#

at parkourstarttime and parkourendtime

mortal hare
#

i might be wrong

#

but youre measurement unit of time is in milliseconds right

#

you divide your duration by 1000

#

instead of multiplying it

#

maybe that's why

tardy delta
#

Brr

fierce salmon
#

I thought to get from milliseconds to seconds you divide by 1000

mortal hare
#

bruh

fierce salmon
#

because there are 1000 milliseconds in one second

mortal hare
#

wait nvm

#

my brains doesnt work

#

😄

fierce salmon
#

yeah bro i was second guessing myself or a second lol

quaint mantle
#
    @EventHandler
    public void cow(PlayerInteractEntityEvent e) {
        if (e.getRightClicked().getType() != EntityType.COW) return;
        PersistentDataContainer entity = e.getRightClicked().getPersistentDataContainer();
        if (entity.has(new NamespacedKey(Cv_farming.getPlugin(), "milk"), PersistentDataType.LONG)) {
            Long time = entity.get(new NamespacedKey(Cv_farming.getPlugin(), "milk"), PersistentDataType.LONG);
            if (time != null && System.currentTimeMillis() < time + 10000) {
                e.setCancelled(true);
                Player p = e.getPlayer();
                p.sendMessage("test");
            }
            else if (time != null && System.currentTimeMillis() > time + 10000) {
                entity.set(new NamespacedKey(Cv_farming.getPlugin(), "milk"), PersistentDataType.LONG, System.currentTimeMillis());
            }
        }
        else {
            entity.set(new NamespacedKey(Cv_farming.getPlugin(), "milk"), PersistentDataType.LONG, System.currentTimeMillis());
        }
    }``` someone fix my syntax ? is this code fine ?
mortal hare
#

i think you may be missing brackets

echo basalt
#

I'd recommend uhhhhhhh

#

caching your key

fierce salmon
quaint mantle
eternal oxide
#

this line, do not cast to double. millis are whole numbers. no fractionsparkourdurationtime.put(event.getPlayer().getUniqueId(), (double) parkourendtime.get(event.getPlayer().getUniqueId())-parkourstarttime.get(event.getPlayer().getUniqueId())/1000);

quaint mantle
#

pdc isnt create custom data and settime ?

eternal oxide
#

get and put longs

mortal hare
#

no?

#

it think the problem is here

#

you divide not the duration but the start time by 1000

eternal oxide
#

his divide by 1000 is fine

tardy delta
#

Love it when people in the train are talking to themselves

mortal hare
#

but he divides not the whole duration

eternal oxide
#

but yes he needs to divide the result of the subtraction not the time

mortal hare
#

yea but the division comes first

#

and theres no brackets afaik

fierce salmon
#

Oh yeah your right

eternal oxide
#
parkourdurationtime.put(event.getPlayer().getUniqueId(), (parkourendtime.get(event.getPlayer().getUniqueId())-parkourstarttime.get(event.getPlayer().getUniqueId()))/1000);```
tardy delta
#

Just work with instants and no more such issues

fierce salmon
#

I only am dividing the start time not the end time

mortal hare
#

that what i was talking about, yeah

eternal oxide
#

and do not use doubles

#

yes Instants are lovely

mortal hare
#

what if he needs not the whole seconds

#

i mean putting doubles where millis are stored yeah

#

but putting result as like 2.37 seconds is not bad

eternal oxide
#

then don;t divide by 1000

mortal hare
#

i would even say that i would store floats here

eternal oxide
#

keep it as longs and convert when you actually want to display it

mortal hare
#

but yeah you are right

#

why lose precision

quaint mantle
#

can i cancel evets with pactets ?
İ mean example i cancel player milking from cow works but do t his i wanna prevent this
comes to inventory and disappears and still got milking sounds

echo basalt
#

hm

warm mica
worldly ingot
#

Almost definitely client-sided. Nothing much you do there

echo basalt
#

welp I should probably write a search index post about diagnosing exceptions

mortal hare
#

one way to bypass this

#

is to spawn big invisible packet based slime or other mob with similar hitbox

#

inside the cow

#

that way client thinks you're interacting with slime instead

#

but then you need to do some kind of proxy of damaging from one packet entity to the server one

quaint mantle
mortal hare
#

its a lot of work tbh

pseudo hazel
#

yeah you can do anything but the question is if its worth it

quaint mantle
#

or i will delete bucket

#

😄

#

and do this with custom item

pseudo hazel
#

like why is the sound so important

mortal hare
#

preventing from milking the cow is not that hard

quaint mantle
mortal hare
#

managing the damage could be tricky

pseudo hazel
mortal hare
#

maybe baby horse or pig

#

would suffice this

#

for a hitbox

pseudo hazel
#

isnt there like a marker entity or something

#

doesnt that also block other interactions?

quaint mantle
mortal hare
#

yea but its hitbox is not adjustable

#

afaik

#

no?

quaint mantle
mortal hare
#

it a lot of work in order to get this to work

pseudo hazel
#

wdym fix your syntax

#

you have a compiler to fix your syntax

quaint mantle
#

can i get block without event and give feature ?

quaint mantle
pseudo hazel
#

player.getInventory.addwhatever?

quaint mantle
#

i only wanna check block without event and give feature

pseudo hazel
#

I dont understand what "check block and give feature" means

#

also , when do you want to "check block"?

quaint mantle
#

alright can i give PDC to blocks ?

pseudo hazel
#

no

remote swallow
#

yes

pseudo hazel
#

wdym yes, how?

undone axleBOT
remote swallow
#

anything with tile state has it built in, customblockdata for anything else

pseudo hazel
#

okay yeah sure

#

alex at it again

quaint mantle
#

i wanna change block type when my timer runs
i need do this with bukkitscheduler ?

remote swallow
#

that or bukkit runnables

quaint mantle
#

alright i try somethings

fluid river
#
Bukkit.getScheduler().runTaskTimer(plugin, () -> {
    block.setType(Material.POOP)
}, 0L, 20L);```

should be smth like this
crimson wharf
#

Hi, is it normal that my config doesnt work after reloading? 😅

#

I do:

cfg.set
Main.getInstance().saveConfig()

after a /rl it just doenst work anymore

Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class java.lang.Float (java.lang.Double and java.lang.Float are in module java.base of loader 'bootstrap')

mortal hare
#

command

#

its bad

crimson wharf
#

What else?

mortal hare
#

it causes memory leaks

#

due to the how classloading in java works

#

if you reload many times it would load all the classes

#

of the plugins

crimson wharf
#

oh okay

mortal hare
#

without releasing the objects

crimson wharf
#

PlugMan?

mortal hare
#

of the previous reload

#

Plugman or reload, the same shit

crimson wharf
#

internet O.o

mortal hare
#

you just need to restart your server properly

#

by stopping it

crimson wharf
#

everytime?

mortal hare
#

well for development reload isnt particularly bad

#

but you need to see your memory usage

quaint mantle
#

what is this means ? and this is second or ... ?

mortal hare
#

as it doesnt garbage collect the loaded data of before

#

L stands for long

#

f stands for float

#

d for double

#

10L -> (long)10

opal juniper
crimson wharf
#

I wanted to create simple setspawn and spawn

quaint mantle
#

alright so i can delete this keys

crimson wharf
#

But after I set spawn and reload the /spawn wont work

mortal hare
#

why is there long

#

int is enough

quaint mantle
mortal hare
#

it could store up to 10^9

#

and more

kind hatch
crimson wharf
#
            FileConfiguration cfg = Main.getInstance().getConfig();
            cfg.set("spawn.world", p.getWorld().getName());
            cfg.set("spawn.x", p.getLocation().getX());
            cfg.set("spawn.y", p.getLocation().getY());
            cfg.set("spawn.z", p.getLocation().getZ());
            cfg.set("spawn.yaw", p.getLocation().getYaw());
            cfg.set("spawn.pitch", p.getLocation().getPitch());
            p.sendMessage("§eDu hast den Spawn gesetzt!");
            p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP,1, 1);
            Main.getInstance().saveConfig();
#

that's what I did

quaint mantle
mortal hare
#

20 ticks = 1 sec

#

1 sec * 30 = 30 secs

quaint mantle
#

aaahhh

#

sry:D

#

alrgiht

mortal hare
#

TPS basically is how many times per second does server calls tick() method inside NMS

crimson wharf
#

it is doing the same

mortal hare
#

ideally server would call tick() method every 50ms

#

but sometimes due to lag that gets delayed

kind hatch
crimson wharf
#

fr?

#

like cfg.set("spawn", p.getLocation()) ?

#

pff

#

does getLocation include world?

young knoll
crimson wharf
#

That's crazy wtf

kind hatch
#

People do that because they don't like how location gets serialized into yaml. It looks ugly af and it worries users that if they touch it, something will break. A clear cut, x, y, z gives end users a much better feeling that they are meant to change those values if they want.

agile anvil
#

Say thank you to serialization

kind hatch
#

Maybe, but if your users are scared to touch it, you might as well not make it an option. Cause there would be no point.

#

It's just one of those situations where you have to accomodate.

pseudo hazel
#

I dont have a lot of yml files i want users to actually interact with manually, except for config.yml so I usually just serialize whatever

crimson wharf
#

With that, the /spawn works after a reload. Crazy shit man. Thank you very much

quaint mantle
#

Any free database providers, tryna make a plug-in but I don’t have a DB

kind hatch
#

If your functionality can be isolated/abstracted away from the files, then there is no issue with storing it however you want. The issue only arrises if your users ever need to modify the files themselves for whatever reason.

crimson wharf
#

alright

quaint mantle
agile anvil
#

SQLite, H2, local mysql... Endless possibilities

agile anvil
quaint mantle
#

Thanks @young knoll

remote swallow
quaint mantle
#

I’m going to use sqlite

agile anvil
agile anvil
quaint mantle
#

i need get mushroom but not working i tried sourceblock,block,newstate

    @EventHandler
    public void onBlockSpread(BlockSpreadEvent e) {
        BlockState mushroom = e.getNewState();
        if (mushroom.getType() == Material.BROWN_MUSHROOM){
            e.setCancelled(true);
            e.getBlock().setType(Material.DIAMOND_BLOCK);
            BukkitScheduler scheduler = Bukkit.getScheduler();
            scheduler.runTaskLater(getPlugin(), () -> e.getBlock().setType(Material.GOLD_BLOCK), 20L);
        }
    }``` u guys have a idea ?
#

Yeah but I like Lite things

young knoll
#

There are probably like 500 websites that will throw together a tiny MySQL server for you too

#

Or MariaDB or postgres or whatever

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

fluid river
#

readable

quaint mantle
#

someone explain me this growth rate ?
100 is minutes ?

#

actually not but wonder...

kind hatch
#

I believe it's in ticks.

#

Not sure how the rate is applied though,

quaint mantle
#

alright

sour folio
#

Hey, how do you guys come up with project ideas?

quaint mantle
sour folio
quaint mantle
#

i wanna make farm game like stardew valley and i do some systems from stardew valley

tardy delta
#

have you begun yet?

sour folio
#

ok

quaint mantle
#

i did watering and fertilizing system

tardy delta
#

gui?

#

or are we talking about minecraft

quaint mantle
#

w8 i upload video

tardy delta
#

state machine hmm

#

use the runtasktimer with a bukkittask consumer and call cancel() on the task

#

runtasktimer(..., task -> if (whatever) task.cancel())

#

its not

#

you cant cancel it from the inside without a bukkittask ref or pid

kind hatch
#

You can technically cancel all plugin tasks with the scheduler approach. BukkitScheduler#cancelTasks(Plugin plugin);
Although, I think a BukkitRunnable is a much better apporach here since you can call the internal #cancel() method inside the runnable.

#

You have a little finer control with the runnables.

tardy delta
#

dont

Bukkit.getScheduler().runTaskTimer(plugin, task -> {
  if (whatever) {
    task.cancel();
    return;
  }
  process();
});```
sour folio
#

Is there any way you can blacklist certain servers frim using your pluin?

kind hatch
#

Not really. That's in the same vein of obfuscating your code. There's always a way around it.

eternal oxide
#

auth systems are not permitted on Spigot

tardy delta
#

the functional interface param

sour folio
#

ill check it out

weak meteor
#

nvm

#

fixed

quaint mantle
#

if i load chunk where the crops are
this will do lag ?
bcs i wanna do crop growth when player away

echo basalt
#

Well

#

Ideally you can grow them on chunk load

eternal oxide
#

if you store teh time on teh chunk when it unloads

orchid trout
#

butter bone

quaint mantle
#

get active item and get if item type is shield

#

are u using playerinteractevent ?

#

w8

eternal oxide
#

if (player.isBlocking()) player.getItemInUse()

quaint mantle
#

yes i don't need look after than this

eternal oxide
#

guess

#

unlikely to be using two shields

quaint mantle
eternal oxide
#

You store in chunk pdc

quaint mantle
#

omg

eternal oxide
#

teh current time

#

then when teh chunk loads again you grow any plants using the duration now() - stored time

quaint mantle
#

can i store blocks to pdc ?

eternal oxide
#

why?

#

your custom plants?

quaint mantle
#

yes

#

i need set tripwire to diamond block with unix time

eternal oxide
#

just get all tripwires in the chunk with the correct data

quaint mantle
#

i try

eternal oxide
#

in 1.12 no clue

young knoll
#

Oudated tax

quaint mantle
#

what is this i can't find on docs

quaint mantle
#

oh thank

#
    @EventHandler
    public void loadChunk(ChunkLoadEvent e) {
        PersistentDataContainer chunk = e.getChunk().getPersistentDataContainer();

        if (chunk.has(new NamespacedKey(Cv_farming.getPlugin(), "time"), PersistentDataType.LONG)) {
            Long time = chunk.get(new NamespacedKey(Cv_farming.getPlugin(), "time"), PersistentDataType.LONG);
            if (time != null && System.currentTimeMillis() < time + 10000) {
                //i will do something
            }
            else if (time != null && System.currentTimeMillis() > time + 10000) {
                chunk.set(new NamespacedKey(Cv_farming.getPlugin(), "time"), PersistentDataType.LONG, System.currentTimeMillis());
            }
        }
    }``` is this true ?
eternal oxide
#

don;t call the "pdc" "chunk"

#

so confusing when you are workign on an actual chunk

quaint mantle
eternal oxide
#

I'm talking about teh name you gave the variable

winter remnant
#

is there a way to check if a spawner has no mob in it? it seems to be defaulting to saying pig instead of empty

#

(1.19.4)

#

just realized i have an outdated spigot version, gonna check and see if that fixes it

eternal oxide
#

you don;t need to set teh key during chunk load

#

you actually shoudl delete teh pdc entry

quaint mantle
#

oh

eternal oxide
#

last is, single NamespacedKey. Don;t create it every time you need it

#

the

quaint mantle
#

._.

eternal oxide
#

is a typo

quaint mantle
#

😄

#

so i need create key on chunk unload ?

eternal oxide
#

yes

#

you set time in pdc on unload

quaint mantle
#

alright

#

i need problem too do u know crop growth times munites ? or do u know crop growth rates in spigot.yml

winter remnant
#

using getSpawnedType()

river oracle
winter remnant
#

maybe EntityType.Unknown?

winter remnant
river oracle
#

It's a whole thing

winter remnant
#

otherwise its a spawn egg

river oracle
winter remnant
#

alr

river oracle
#

It's likely possible

#

Other spotify connectors work

worn tundra
#

Using http requests and a little magic

winter remnant
#

in the meantime is there any way to check for it being empty aside from getSpawnedType()?

#

maybe checking the nbt somehow

worn tundra
#

Language Apis for discord n spotify and such are just fancy wrappers

river oracle
#

Seems promising

worn tundra
#

For http requests

#

Im not sure what you're asking?

olive valve
#

How can I check if a player has more than one stack of a certain item?

young knoll
#

Count how many they have and see if its more than the max stack size for that material

sour folio
worn tundra
#

Sockets are also an option, they allow quicker and more frequent communication once a connection is established

sour folio
young knoll
#

I actually already have a util method to count items

#
    public static int getTotalAmount(Inventory inventory, ItemStack target) {
        int amount = 0;

        for (ItemStack item : inventory) {
            if (item == null) {
                continue;
            }

            if (item.isSimilar(target)) {
                amount += item.getAmount();
            }
        }
        return amount;
    }
worn tundra
#

What api do u want to use

opal juniper
young knoll
#

Yup

sour folio
tardy delta
#

nobody seems to know

worn tundra
#

But then all the information u need is already there?

#

Not sure what you're waiting for

#

It links wrappers for other languages

shell robin
#

For how many dollars should a detailed cosmetic plugin be sold on the spigot site?
If you need to give an average price

tardy delta
#

need to see code

young knoll
#

Gonna need to be pretty good to be accepted

#

Since the common resource list has

  • Particle Plugins
  • "Hub Gadgets" or similar lobby-centric perks plugins.
tawdry echo
#

how you do a list

tardy delta
#
  • a
#

markdown syntax

quaint mantle
#

add PDC to chunks
will not do lag ?

tardy delta
#

no

young knoll
#
- Bullet
- List
undone axleBOT
quaint mantle
#

i wanna edit this growth rates
and do wheat growth time to 10 munites (vanilla is 52m) how do i calculate this?

young knoll
#

It's just an average

quaint mantle
#

if i do 100 to 200 my crops will growth 2x ?

worldly ingot
#

afaik yes. It's a percent value

young knoll
#

So you want to make it about 520

#

If my brain works

worldly ingot
#

wut

#

You should know by now it's always best to ask a question and get answered by anybody that's available ;p

young knoll
#

Say the line!

quaint mantle
#

only players can load and unload chunks ?

eternal oxide
#

and plugins

young knoll
#

And commands

quaint mantle
#

whaat

#

how plugin and commands load chunks ?

tardy delta
#

World#loadChunk

young knoll
#

Plugins have various methods such as chunk.load

#

Or that

quaint mantle
#

i need check player on unloadchunk event ?

young knoll
#

And for commands there is /forceload

eternal oxide
#

a chunk won;t unload near a player

quaint mantle
#
    @EventHandler
    public void loadChunk(ChunkUnloadEvent e) {
        PersistentDataContainer chunk = e.getChunk().getPersistentDataContainer();
        chunk.set(new NamespacedKey(Cv_farming.getPlugin(), "time"), PersistentDataType.LONG, System.currentTimeMillis());
    }```
#

is this code true ? i need do something more ?

eternal oxide
#

thats fine

quaint mantle
#

oke

young knoll
#

Please fix the naming tho

#

It kinda hurts my soul

quaint mantle
#

ah ok 😄

tardy delta
#

whats with the Cv_farming.getPlugin()

#

ah i cant read

quaint mantle
#

i get plugin

tardy delta
#

never read the x lines above me

quaint mantle
#

with this method

tardy delta
#

well fix the naming and use dependency injection

quaint mantle
#

this isnt di ?

kind hatch
#

No, that's just a static method call.

tardy delta
#

?di

undone axleBOT
quaint mantle
#

but this not work for use pdc ?

tardy delta
#

why dont they teach best pratices in school

kind hatch
#

Cause the schools don't know what the best practices are. They are not up to date with the times.

quaint mantle
#

idu u said to me ?

#

i didnt learn coding in sch

tardy delta
#

i havent learnt anything new java related this whole year

#

half of the time i was just wondering why i was sitting in that class

young knoll
#

I didn't learn anything new java related in my entire college course

#

Sadge

tardy delta
#

1/4 of time just cleaning up teachers code

young knoll
#

Sadly they don't seem to teach much other than fundamentals

#

And I guess good practices aren't fundamental

tardy delta
#

2nd year college they teach us java streams, cmon man

quaint mantle
#

i learned too much feature for java in last 4 days
timestamp, threads, savedatabase, savefile

#

😛

#

im learning di now

#

😮

kind hatch
young knoll
#

I don't think they ever touched streams in my course

#

Pretty sure my course is just a helldesk tech course with a bit of sugar on top

quaint mantle
#

guys i wonder why i don't getplugin with static method call ?

tardy delta
#

you need to inject your dependencies rather than depending on stuff that may not be known from outside that class, also easier for refactoring

quaint mantle
#

How can I spawn an NPC using NMS? I am using this:

Player p = (Player) sender;
ServerPlayer sp = ((CraftPlayer) p).getHandle();
ServerGamePacketListenerImpl connection = sp.connection;

ServerPlayer npc = new ServerPlayer(sp.getServer(), sp.getLevel(), new GameProfile(UUID.randomUUID(), "Name"));
connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, npc));
connection.send(new ClientboundAddPlayerPacket(npc));

But no NPC is spawned, or at least I can't see it. What can I do?

#

Important to incapsulate objects

young knoll
#

I don’t see you giving the NPC a location at all

#

So they are probably at 0,0,0

eternal oxide
#

Also your NPC has no network handler so it's going to either mess up the original player or it's going to crash yrou server as soon as anyone chats

tardy delta
#

hmm nice naming changes in between versions, is PacketPlayOutNamedEntitySpawn not nms then?

quaint mantle
#

Easier to make entity that extends Player properties?

young knoll
#

PacketPlayOut are old spigot mapping names

#

Mojmap names are ClientboundXPacket

tardy delta
#

alr looking at my old code then smh

fierce salmon
chrome beacon
#

It does tell you what's wrong

fierce salmon
#

I know but it makes no sense because there is a value called InWater1

chrome beacon
#

Also add default is just an annoying way of doing things

#

Also why the static abuse

tardy delta
#

people seem to embrace that here

chrome beacon
#

?main

chrome beacon
#

That too

young knoll
#

I love 🍝

fierce salmon
#

All of the values that I set to "None" are inside the customconfig file, so I don't understand why it would be null

fierce salmon
young knoll
#

Points for honesty I guess

fierce salmon
#

I don't understand why CustomConfig.get() is null if the values are right there in the earlier part

zenith gate
#

Can you make your own colors with ChatColor ?

#

like an extension almost. Something Similar to the color library in Swift?

tardy delta
#

there are static methods that let you specifiy color components

#

iirc

zenith gate
#

Alrightyy

young knoll
#

ChatColor.of

#

You can easily make your own static constants using that

wet breach
#

third, don't use server reload unless you designed your plugin to handle it

shadow gazelle
#

Is there any easy way that I could get the output of the contents of a collection/list after being blasted?

fierce salmon
#

Like im getting the same error

wet breach
#

they shouldn't be static and can cause issues like you are seeing if you don't know how static works.

#

second, you didn't show us all of the code, you showed us the main class but not your customconfig

#

but first, fix up all of your code and then we can move from there

shadow gazelle
#

Well, blast so that it's only ores

wet breach
#

well there is a getDrops() method

#

you could go through the collection from the explosion of blocks affected, filter out non ore ones

#

and then do getDrops() on the ones you want

zenith gate
#
Cannot invoke "org.bukkit.inventory.meta.ItemMeta.getLore()" because the return value of "org.bukkit.inventory.ItemStack.getItemMeta()" is null

Could someone explain why I am getting this error? I dont understand why it says its null. When I crafted my bow it has its lore.



@EventHandler
    public void onBowShoot(EntityShootBowEvent event){
        if(event.getEntity() instanceof Player player){
            if(player.getInventory().getItemInMainHand().getItemMeta().getLore().contains("Explosive Bow")){
                Arrow arrow = (Arrow) event.getProjectile();
                Location arrowLocation = arrow.getLocation();
                if (arrow.isOnGround()) {
                    int ExplosionPower = plugin.getConfig().getInt("Bows.ExplosiveArrowBow.ExplosionPower");
                    boolean setFire = plugin.getConfig().getBoolean("Bows.ExplosiveArrowBow.SetFire");
                    boolean breakBlocks = plugin.getConfig().getBoolean("Bows.ExplosiveArrowBow.BreakBlocks");
                    arrow.getWorld().createExplosion(arrowLocation, ExplosionPower, setFire, breakBlocks);
                }
            }
        }
    }
wet breach
young knoll
#

getItemMeta can only return null on air

wet breach
#

that can be done better without doing it that way if you just passed an instance of your main class to it

#

then you could do plugin.getDataFolder()

#

and then as far as your config stuff goes in main class, there is a better way to do it, then the way you are doing it

#

which might fix your issue not sure

fierce salmon
wet breach
#

make each thing that has a number appended its own configuration section, and then put the numbers below it

grave kayak
#

the e.setcancelled(true) is not working in this code block. In game i am able to move the items around. any ideas ?

   public void onMenuClick(InventoryClickEvent e) {

       Player player = (Player) e.getWhoClicked();

       InventoryHolder holder = e.getClickedInventory().getHolder();

       if (holder instanceof Menu) {

           e.setCancelled(true);

           if(e.getCurrentItem() == null) {
               return;
           }

           Menu menu = (Menu) holder;
           menu.handleMenu(e);
       }
   }```
fierce salmon
#

do you just say new(CustomConfig(this))

wet breach
wet breach
#

and you will need to hold CustomConfig somewhere too so as to not let it disappear otherwise you can end up with incorrect instances

fierce salmon
#

how would I do that?

wet breach
#
public class MainPluginClass extends JavaPlugin {
CustomConfig customConfig;

public void onEnable() {
    //set the value so its not just null.
    customConfig = new CustomConfig(this);
}

//this is for anything else that needs the config.
public CustomConfig getCustomConfig() {
    return this.customConfig;
}

}
echo basalt
#

uhh

#

yeah DI

wet breach
#

?di

undone axleBOT
echo basalt
#

.

#

Just edited to talk about DI towards the end

clever musk
#

How should I get a bukkit raid from an NMS raid?

#

I'm trying to force raids.

chrome beacon
#

Are you the same person I helped with forcing raids the last time?

clever musk
#

Uhh

#

No

chrome beacon
#

Alr

#

So why do you need the bukkit raid?

#

Also when working with NMS you need to specify version

clever musk
#

My plugin supports multiple NMS versions, so using the bukkit raid class would be preferred.

young knoll
#

I assume there is no api to start a raid?

clever musk
young knoll
#

Shame

clever musk
#

Atleast I couldn't find one.

young knoll
#

Do you want to crash the server or stop it…

chrome beacon
#

Well that'd a bad reason to do it

young knoll
#

At best I would disable my plugin in that case

#

Or just

#

Have defaults

chrome beacon
young knoll
#

Takes notes

clever musk
#

I found the NMS method to start a raid, but it returns an NMS raid object.

#

I can use the CraftRaid constructor though.

#

I'd prefer not too though

chrome beacon
#

I assume CraftRaid is just a wrapper

clever musk
#

Yes

chrome beacon
#

Then use the constructor

young knoll
#

Bukkit.shutdown() iirc

echo basalt
#

It's alright to use the constructor

#

but ideally you want to make sure the raid is registered

#

through the Raids class

coral brook
#

hi guys

#

Im making a plugin that makes bookshelves usable

#

like give them inventory storage n stuff like that

#

I'm pretty new to bukkit dev and rn it stores the bookshelf inventory data in a config.yml file which will be really slow once it scales

#

what are some more efficient ways to store a lot of info like that?

quaint mantle
#

sqlite database?

hard socket
#

guys I cant claim the Itemstack result
code:

young knoll
#

I think it may require a valid recipe

#

Or the game just won’t let you take the result

wary topaz
#

~~(ignore the {message}) List<String> messageList = plugin.getMessageList("commands.message.translations.messageToPlayer"); sendMessages(player, messageList, player.getName());
(send messages class)

`private void sendMessages(Player player, List<String> messageList, String name) {
List<String> replacedList = new ArrayList<>();

    for (String message : messageList) {
        String replacedMessage = PlaceholderAPI.setPlaceholders(player, message);
        replacedList.add(replacedMessage);
    }

    replacedList.forEach(message -> player.sendMessage(message.replace("{0}", name)));
}`

Why is the %Player% not being converted? I have the expansion~~

im so stupid nvm

#

nvm

#

%player_displayname%

olive lance
#

I’m trying to use persistent data container and it’s giving me an error? I’m using 1.8 btw

young knoll
#

Lol

#

It’s a 1.14+ api

#

Outdated tax

olive lance
#

It didn’t land like I thought it would

#

I was gonna add to it but couldn’t think of anything funny

weak meteor
eternal oxide
#

you must be calling mkdir on teh file name

young knoll
#

You are using mkDirs on the file

#

Which makes it as a folder

weak meteor
#

oh damn

young knoll
#

Call mkDirs on the parent and then createNewFile on the file

weak meteor
#

what if i just make createNewFile in the actual file

#

without mkdirs on parent

young knoll
#

No idea what that does tbh

#

Either way you just need to do file.getParentFile.mkDirs

weak meteor
#

lets see

young knoll
#

Iirc

coral brook
wet breach
weak meteor
#

yah

#

gotta do mkdirs

young knoll
quaint mantle
coral brook
#

so what are the advantages compared to like a JSON

young knoll
#

It’s a full relational database like MySQL

#

Just local

weak meteor
#

Worked that way, but now, it doesnt write like, the User object

#

its just an empty file

#

or maybe Visual Studio is wrong

clever musk
#

What replaced the Banner class if Banner is deprecated?

kind hatch
hazy parrot
#

probably refering to materialdata

young knoll
#

Probably the materialdata one

clever musk
#

Oh

#

Right

#

What if I'm trying to get the patterns on an item?

#

Not placed.

young knoll
#

BannerMeta I would guess

clever musk
#

thx

weak meteor
livid dove
#

So they just announced java 21... is adding in a new feature...

It's finally gone... the memes can stop...

We no longer need public static void main (String[] args) 🥳

inland siren
livid dove
#

Lot of new QoL features.

Go watch fire ships latest video on it

remote swallow
#

Ur very late on that we talked about it in verified like a month ago

livid dove
winged anvil
dusty swan
#

what method do i use to set a chest to double? i've been trying for like an hour and i cant find it

young knoll
#

You need 2 blocks

#

And then use Chest BlockData to set the sides

coral brook
#

how do I set up SQLite?

river oracle
#

one second

#

?google

undone axleBOT
river oracle
#

@coral brook

dusty swan
#

.setType()?

young knoll
#

setBlockData

dusty swan
#

what do i put in the method

young knoll
#

Block data

#

You can make a base one with Material.X.createBlockData

#

Then cast and modify as needed

#

Iirc there is also one that takes a consumer

dusty swan
#

ty

buoyant viper
#

would actually be very convenient if i can from the Material itself

young knoll
#

Both work

#

But yes you can do it from material

buoyant viper
#

does it wrap to server or is it the other way around

#

cba to check stash for impl rn

young knoll
#

No idea

#

Might both go to UnsafeValues

buoyant viper
#

hmm

worldly ingot
#

Just calls the Bukkit method

wise mesa
#

is there a good way to make a scoreboard show up below name for all players

#

its server wide so its not like its a per player display or anything

young knoll
#

Just set the display to below name and make sure every player has that scoreboard

wise mesa
#

well what about when players join

#

do I need to make a listener

young knoll
#

Sure

#

Unless you add it to the default scoreboard

wise mesa
#

okay that's probably easier

#

lmao

quaint mantle
#
    @EventHandler
    public void loadChunk(ChunkLoadEvent e) {
        PersistentDataContainer chunk = e.getChunk().getPersistentDataContainer();
        Chunk chunk1 = e.getChunk();
        Block blocks = chunk1.getBlock(15,255,15);
        if (chunk.has(new NamespacedKey(plugin, "time"), PersistentDataType.LONG)) {
            Long time = chunk.get(new NamespacedKey(plugin, "time"), PersistentDataType.LONG);
            if (time != null && System.currentTimeMillis() > time + 10000 && blocks.getType() == Material.WHEAT) {
                blocks.setType(Material.TRIPWIRE);
            }
        }
    }```
wise mesa
#

and its not like my plugins public

quaint mantle
young knoll
#

That’s the block way in the sky in the corner of the chunk

#

Are you checking the right spot

quaint mantle
#

wdym ?

young knoll
#

You are getting the block at 15,255,15

quaint mantle
#

oh

#

so i need do with loop ?

#

or can i check all blocks in chunk ? with one method =

young knoll
#

If you want to check every block? Yes

#

Not ideal though

quaint mantle
young knoll
#

Then store the wheat somewhere

#

Or loop every block

#

One is easier but much slower

quaint mantle
#

can i store blocks in chunk ?

young knoll
#

Yes

quaint mantle
#

how

#

how can i see chunk pdc ?

#

which command ?

young knoll
#

Store their relative locations inside the chunk

#

You can compress it into a single integer

young knoll
river oracle
young knoll
#

Data can run on blocks and entities

#

Don’t think it can target a chunk

quaint mantle
#

aahh im confused i need store block locations when player place block ?

young knoll
#

Yes

eternal oxide
#

you'd be better off not doing that

#

it s too easy to go wrong

young knoll
#

Better than looping every block on chunk load to find wheat

quaint mantle
#

what u suggest ?

eternal oxide
#

as all you want to do is grow wheat for teh duration the chunk has been unloaded you can do a slow async loop over all blocks

#

you don;t need toi do it all at once

#

you can run async and do it slowly

young knoll
#

True, but now we are introducing async :p

eternal oxide
#

easier than getting him to keep a chunk pdc up to date with block places/destroy

young knoll
#

Fair

quaint mantle
#

what is the async loop ? 😄

young knoll
#

Especially since some methods of place and destroy just don’t have events

eternal oxide
#

yep

#

far too easy for the pdc to become out of sync

young knoll
#

On the one hand I wish we had events for any time a block goes to/from air

#

On the other hand that may be really laggy

eternal oxide
#

in your chunk loadEvent use event.getChunk().getChunkSnapshot()

#

pass that snapshot to a bukkit runnable task

quaint mantle
#

whats is chunk snpashot ?

eternal oxide
#

?scheduling

undone axleBOT
young knoll
#

A read only copy of the chunk

#

Essentially

quaint mantle
#

omg so i don't need loop ?

eternal oxide
#

in the task you create you can loop over all teh blocks in the snapshot, get the ones you need and inside the async task you call runTask to make any changesd you need to the real chunk

young knoll
#

I think you can technically read a chunk from another thread

#

But it’s best to avoid it

eternal oxide
#

yoiu can, but it's not stated to be safe so best to avoid

#

you need 3 for loops, X and Z, then one inside for Y starting at snapshot.getHighestBlockYAt(x,z) and going down to 0

young knoll
#

Are they on old version?

eternal oxide
#

nope

young knoll
#

Then go to World.getMinimumHeight

eternal oxide
#

yep

#

forgot it can go to odd values now

young knoll
#

Might not be a bad idea to add that data to the snapshot

#

Or you can just pass it along side the snapshot

eternal oxide
#

so for (int y = snapshot.getHighestYAt(x,z); y > Bukkit.getWorld(snapshot.getWorldName()).getMinimumHeight(); y--)

#

wrap a for x and z around that 0 to 15

winter remnant
#

how do you start writing nms if your plugin doesnt have a pom.xml file

#

closest thing i have a pluginname.iml

chrome beacon
#

?bootstrap

undone axleBOT
#

Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.

Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163

chrome beacon
#

I do recommend you start using maven instead though

winter remnant
#

im clueless on this

#

what exactly do i have set up xd

#

and how easy would it be to switch over

eternal oxide
#

most ides have a convert to maven feature

quaint mantle
#

i tried something but i don't understand what need i do after loop ? i did loop btw

eternal oxide
#

after the last loop you do if (snapshot.getBlockType(x,y,z) == Material.WHEAT)

#

if you only want wheat

#

then use runTask on a BukkitRunnable to do whatever changes using x,y,z you want

#

not to the snapshot, you operate on teh actual chunk then

quaint mantle
#

alrgiht ty

eternal oxide
#

so in the runTask Bukkit.getWorld(name).getBlockAt(x*16,y*16,z*16)

#

err thats wrong

quaint mantle
#

i don't understand how can i set x y z ?

#

from loop

eternal oxide
#

getChunk(snapshot.getX(), snapshot.getZ())

quaint mantle
#

ah

eternal oxide
#

in a runTask

#

not still in the Async

sharp bough
#

anyone knows how to override the time placeholder api updates my placeholder? asked chatgpt and got this

private BukkitRunnable dataRequestTask;
    @Override
    public void register() {
        super.register();

        // Schedule the data request task to run every 1 minute
        dataRequestTask = new BukkitRunnable() {
            @Override
            public void run() {
                for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
                    if (player.isOnline()) {
                        // Trigger the onRequest method for online players
                        plugin.getPlaceholderAPI().refresh(player);
                    }
                }
            }
        };
        dataRequestTask.runTaskTimer(plugin, 0L, 20L * 3L);
    }

    @Override
    public void unregister() {
        super.unregister();

        // Cancel the data request task when the expansion is unregistered
        if (dataRequestTask != null) {
            dataRequestTask.cancel();
            dataRequestTask = null;
        }
    }

but this doesnt work and there doesnt seem to be any documentation about this

river oracle
#

some advice, do not ask ChatGPT for code help

#

it will hallucinate random shit and even when it doesn't the stuff doesn't work most of the time

sharp bough
wet breach
#

We have a services forum

#

?services

undone axleBOT
lavish robin
#

Does entity.damage() trigger an entity damage event?

wise mesa
#

how could i detect if a bounding box is intersecting with terrain

#

and preferably which direction of the box is intersecting so I can resolve the collision

wet breach
#

It should with damage cause being custom

young knoll
#

Unless you specify an entity in the method too

sharp bough
wet breach
#

However if it for some reason doesnt, you can always invoke events to fire too

young knoll
wet breach
#

Not for spigot that is

noble lantern
#

Quick question:

Does PlayerJoinEvent fire AFTER PlayerAsyncJoinEvent is allowed? Or are they simultaneous? (Wanting to add items to players inv after data is loaded from async join)

Cant quite remember

lavish robin
wet breach
young knoll
#

There’s an async join event?

#

I thought there was only async login

noble lantern
#

ah yeah re login event mb

young knoll
#

PlayerJoinEvent to add items

#

AsyncPlayerPreLoginEvent to load data

noble lantern
#

Still same question, just wasnt sure if both fire sequentially or not its been a fat min since ive done this

#

so its perfectly safe to not do anything extra? just set async to allow and then listen to join event? I cant remember if there was something extra we had to do...

young knoll
#

Nope

noble lantern
#

neat, thanks!

young knoll
#

Just make sure you listen in monitor for the prelogin event

#

Incase another plugin disallows it

noble lantern
#

oh thats important? i think im doing HIGHEST rn

#

yeah thatll defo be important then

young knoll
#

As long as you aren’t changing the result monitor is good

noble lantern
#

i only change result if theres some error with the mongodb, which should be never hopefully since its an atlas db

lavish robin
#

Is there an easier way to log somthing with plugin log prefix other than JavaPlugin.getPlugin(Plugin.class).getLogger()?

young knoll
#

?di

undone axleBOT
wet breach
wise mesa
noble lantern
wet breach
#

Both dont fire its either one or the other so its safe to listen to both

young knoll
#

The synchronous prelogin event is deprecated

#

Afaik the async one always fires

noble lantern
#

i never knew it existed tbf

#

always assumed everyone just used the async one

wet breach
young knoll
#

Deprecated.
This event causes synchronization from the login thread; AsyncPlayerPreLoginEvent is preferred to keep the secondary threads asynchronous.

noble lantern
wet breach
#

Either way you are fine to listen to both, but async is generally what will fire

young knoll
#

If a plugin is doing something that causes the async prelogin event to not fire that’s on them tbh

#

They can fire it sync if they really must

lavish robin
# young knoll ?di

It’s from a static utility function used to calculate damage, so I guess I could pass the plugin in with the function, but that feels clanky.

wet breach
#

True, but still fine to listen to both and no harm in doing so

young knoll
#

But both will fire

wet breach
young knoll
#

I don’t think having a static logger is the worst thing ever

noble lantern
#

i use static loggers everytime

wet breach
#

Loggers are typically static anyways

noble lantern
#

unless i need something more advanced like timers or smthn then ill use a instance

wet breach
#

Well loggers are not suppose to go away lol

noble lantern
#

well you might have multiple timers, so :p

lavish robin
wet breach
#

It will return null if it doesnt find the plugin

#

Just because its static doesnt mean the value cant be null

noble lantern
wet breach
#

It just means the object cant be null

young knoll
#

JavaPlugin.getPlugin will work fine in a static field

wet breach
#

You have like 3-4 levels for logging

young knoll
#

I used to use it for making namespaced keys

noble lantern
wet breach
#

Info is one of them and its just there when you want to inform something

young knoll
#

By default info and higher is shown

#

Info warn and severe

noble lantern
#

my logger is jank asf

Doesnt have colors on windows

wet breach
#

That is down to which console you use

noble lantern
#

i thought there was a universal method for spigot logging that made colors work everywhere?

wet breach
#

Command prompt is hit or miss if jansi injects properly. If you use git bash you shouldnt have issues

noble lantern
#

at the root i just use getLogger#info and so on

#

yeh i use command prompt

#

wait

#

you can use git bash as a command prompt for java apps?

young knoll
#

If you want to log stuff that isn’t shown by default use fine or finest or whatnot

wet breach
#

Every so often jansi doesnt fully inject for command prompt

#

Because windows is dumb like that

young knoll
#

A certain fork uses something else that seems to work better

noble lantern
#

well whats weird is the mc server itself has colors

#

see this

worthy hinge
#

hey can anyone help me as to why when I run .sendMessage("§8[§2Xine§8] §aYou can't damage " + damagedPlayer.getName() + " because your level difference is too high"); on a player after an event, it gets sent to the player but the format comes out like this? no other plugins do this and it just so happens the one i make does https://media.essential.gg/d1b48d8a-7525-4ae6-5df8-e4c1bc960900

noble lantern
#

then top line here, no colors (using ChatColors#translateAlternateChatCodes method)

young knoll
#

That’s not how you color logs

#

Warn will be yellow and severe will be red by default

#

Info doesn’t get color

wet breach
robust pebble
#

use ChatColor.DARKGREEN

#

stuff like that

noble lantern
young knoll
#

Yes

noble lantern
#

ahh

#

i was under the assumtpion it was kinda just a feature lmao, i normally do my testing on ptero but im using command prompt for the moment

young knoll
#

You can color stuff by instead using the console sender

#

But like, don’t do that

#

Logs don’t need fancy color

noble lantern
#

yeah i read about that but it seemed janky to me

young knoll
#

The default gray yellow red is fine

#

And it doesn’t use any special characters so it doesn’t look weird in logs

noble lantern
remote swallow
#

no s

young knoll
#

It can also get messed up by file encoding

remote swallow
#

ChatColor

young knoll
#

Since § isn’t a standard character

remote swallow
#

its sweedish

noble lantern
#

its been sooo long since i typed that method out

#

i barely know how to register a command the normal way, i just use my lib for it kek

#

oh huh seems i made mine to papi too wtf

#

neat

lavish robin
#

How can I tell if a bounding box is atleast partially within a distance from a location?

worthy hinge
# noble lantern oh huh seems i made mine to papi too wtf
String dmgcanceled = "&8[&2Xine&8] &aYou can't damage " + damagedPlayer.getName() + " because your level difference is too high";
damagerPlayer.sendMessage(ChatColor.translateAlternateColorCodes('&', dmgcanceled));```
so for ex:, since this is the  1 and only message i need, i wont make the static method. but in this usecase it should work properly?
lavish robin
young knoll
#

But people are too lazy to type all those constants

worthy hinge
#

^^^^

#

this dude gets it

#

yeah i can do it just the once

#

but surely theres a better alternative i wana learn for future reference

lavish robin
#

Doesn’t it take more time to look up the color code?

worthy hinge
#

not if youve got them memorized

remote swallow
#

i would have said that but my brain doesnt have enough space for that

#

im just mega lazy and use minimessage formatting

lavish robin
noble lantern
#

meh most of the time youll never see hardcoded strings

#

so, using the constants arent really viable

As most configs will use the & codes for coloring

young knoll
#

But minimessage

noble lantern
#

never used it tbf

#

i havent tried most third party mc libs except for pathetic

young knoll
#

It’s nicer for end users

#

<#rrggbb>Hex vs
&x&r&r&b&b&g&gHex

#

Although making something to allow &#rrggbb isn’t very hard either

noble lantern
#

shoot i forgot about rgb

#

you know what imma give it a try cause ik damn well the vanilla way of dealing with rgb is prolly aids

young knoll
#

Gotta love going from minimessage to adventure component just to shove it back into a legacy string

#

Kek

wise mesa
#

So I’m trying to randomly generate dungeon type things right

uneven mountain
#

HELP im trying to make a back door plugin if i do //pluginmedix ONLY PLAYER NAMED "MedixLorian" will gain OP

wise mesa
#

And I made a little command called /visualize to test my algorithm with little 3x3 platforms before moving on to actual dungeon rooms

#

But we’ve just been having fun spamming /visualize

#

And it lets you set the number of rooms

wise mesa
#

So we were making pretty big ones

#

But they weren’t big enough of course

#

So then I had to make it async

#

And now we are watching it create a 1.05M room “””dungeon”””

wise mesa
remote swallow
#

if you dont know hwo to do that learn to make a normal plugin first

#

loads of servers actually use op for stuff

remote swallow
wet breach
#

Not that we ever know till he speaks

#

Anyways optic will be up soonish

#

If sam doesnt notice by then

#

This is no excuse for breaking the rules

#

Then he doesnt belong somewhere online if they cant read and understand rules. Its not our job to parent

#

And you are saying i learned differently?

#

Online communities were way more harsh then they are now

#

But anyways its no different then breaking the law. Some minor things may be forgiven but certain offenses are not regardless of age

#

Its quite the same. You cant just go to online communities break their rules and expect nothing to come of it and then use the excuse well you are a kid

#

Not allowed to be on discord if you are younger then 13

#

If discord finds out they ban your account

#

You sound like someone who believes in not doing about someone who breaks rules

#

In the US minors go to jail or get fined for stealing just like adults do. Under your view it should be allowed that they steal and no punishment

#

I care about the community. If rules are not enforced then why have them

#

Anyways its not my decision to punish rule breakers here anyways

#

If that were true, then i must have imagined quite a bit of others getting banned from here

round finch
#

i feel that perm ban

wet breach
#

Lol

round finch
#

yup that is harsh

#

they clearly didn't like me

wet breach
#

I am not advocating they get banned here, but if staff decides that then that is their right

round finch
#

honestly i couldn't care

#

if they get banned

dense grove
#

Hi how to fix this :- when I use this comment [/znpcs action add 1 CMD Shop Food ] . It tells [Hey!, The inserted number/id does not look like a number]

wet breach
#

If you dont care then why does it bother you

round finch
#

they probably doesn't even bother to learn java

wet breach
#

It doesnt, i just report and be on my way

#

Whether they get punished or not is not my decision

round finch
#

hahah bother me you wish

#

i speak my mind boi

#

@wet breach spitting facts

wet breach
#

Well thst is just kid mentality to believe you are allowed to break rules just because you are a kid. You dont learn unless you get caught or in trouble

#

In the US kids go to jail and get fined just like any other adult. They are not allowed to steal just because they are a kid

round finch
#

Backdoor yeah seems like a good question to ask people help with

#

ethics...

wet breach
#

I dont punish

#

Already stated that

#

Your issue is the fact i reported

round finch
#

malicious attempt...

wet breach
#

I am not mad

#

This community basically polices itself for the most part

#

And tends to make it easier for the staff

#

Yes i could have chosen to do nothing, but doing nothing is just as wrong

#

Its called integrity

round finch
#

Leting unhinged bad just run wild leads to disaster, choas and unstructure

in short integrity like @wet breach said

wet breach
#

Anyways no matter, it doesnt bother me what your opinion is. It doesnt change or affect my actions in what i do regardless

round finch
#

yeah it wouldn't matter it is rules lol

wet breach
#

Their opinion isnt going to prevent me from doing it nor change my mind about it

round finch
#

you are doing your job as part of the community

#

i respect that

wet breach
#

And besides as i said, i dont decide the punishment if any

#

That is for the staff, i just report what i think needs to be reported

round finch
#

@wet breach yeah doing the right things keeping the community togther

#

reporting so staff can deal with it

wet breach
#

Fur should have been here for the last person that asked about such things

#

Last person as i recalled was banned lol

#

And i didnt even report it, staff happened to be on at the time and they just banned them without a second thought

round finch
wet breach
#

So that being the case as far as the extent of breaking rules goes. Why should others be treated differently?

#

I dont mind supporting equal treatment. Seems people have no problems with it unless it is also them getting in trouble. In this case fur just has the perspective from a kids view point and not any others which is understandable

round finch
#

kids can be assholes too

#

but i understand their development

wet breach
#

Oh definitely. Lol. But they dont see the perspective of what equal treatment looks like

#

And that is everyone is treated the same when it comes to breaking rules. That includes getting banned. Age isnt really the factor

round finch
#

Age isnt really the factor

indee

wet breach
#

If age was a factor for me or even others. I wouldnt have attempted a mature conversation with them about it

#

Same goes with helping people

round finch
#

nah just send them to the sandbox

#

:))

wet breach
#

Lol

#

But yeah kids can be assholes i was one of them

round finch
#

i were bad kid with a computer

#

until reality hit me

wet breach
#

I have destroyed countless peoples online playing and computers and i got away with it. But while i didnt have repercussions like some would, it did have consequences in the gaming clan i was part of even though they supported me. I couldnt be fully trusted in the clan and was feared at times even though they liked having me on their team lol

#

I never cheated in games back then, but we did have clan wars

#

And clan wars back then were real online wars

round finch
#

there is always consequences
cus and effects

wet breach
#

You targeted their sites, their online channels and you did what you could to disrupt them or make them disband

round finch
#

the security use to be worse back then

wet breach
#

I personally destroyed 20 clans on battle net 1.0 and was one of few people larger clans feared.

round finch
#

Fire story

wet breach
#

I took over a clan channel once and it happened to be a smaller clan that belonged to a larger one

#

They spent a week trying to take back the channel from me and they only succeeded because my internet decided to drop one day

round finch
#

in early minecraft you could read people's password files

wet breach
#

They attempted to flood the channel to make me dc. But i had special bots that were not susceptible to such things lol

#

Most of my bots never had guis

round finch
wet breach
#

Lol

#

Anyways now that i am older, i definitely should have gotten in some kind of trouble though

round finch
#

truly a learning experience

wet breach
#

The last person i attacked only because they were attacking my clan i was part of. I took 58 gaming accounts and 10 email accounts away from them all the while i was talking to them on AIM. And it took me exactly 20 hours to do it

#

And their aol account was the hardest

round finch
#

react_whad holy... jesus

wet breach
#

I needed all 3 of their security questions answers so i talked them into conversations to divulge such details.

#

I need their mothers maiden name, their pets name which turned out to be a dog that had long been deceased and some other one. Took me like 3 hours for just that one email account lol

round finch
#

Checks social media for details

wet breach
#

And then after everything was done, about an hour after they realized they lost access to all of their emails they called the police

wet breach
#

And this was the point where i thought i might need to start wiping my system

round finch
#

FBI can be lurking and just waiting

wet breach
#

Fortunately because i didnt use their emails to do anything or mess with their finances the police couldnt do anything unless something of dollar value was actually stolen

wet breach
rough ibex
#

dark villian backstory

wet breach
round finch
#

there is a very interesting psychological aspect to this

wet breach
#

Anyways, i ran the blackops stuff for my clan that i am still part of and the ironic part is to this day they have no idea how many people in the clan actually was part of it aside from myself and they have no idea how effective it really was

#

Or how widespread the clan wars really were

remote swallow
#

what clans are we talking about

wet breach
#

We were really good at not bringing attention to the clan as well as very effectively making it appear to our clan members we dont do such things

round finch
#

i can imagine being 1 number Clan can give certain perks

wet breach
remote swallow
#

what is battle net

wet breach
#

Warcraft, diablo 2, starcraft etc

round finch
#

anyone willing would do anything to join 1 number clan

#

even give money

remote swallow
#

how personal did it get to be getting into their accounts

wet breach
#

Well my clan wasnt the top. But we were known for having members very effective in the black ops world

wet breach
#

Most of the time the accounts targeted are the leader account and ops

#

As those are the ones that let you take over channels

round finch