#help-development

1 messages ยท Page 1949 of 1

sacred mountain
#

thats the main class

tardy delta
#

idk

hollow sand
#

How would I be able to fix this error? I get this in console every time I execute a cmd

[14:25:06] [Server thread/INFO]: laptev issued server command: /particle heart
[14:25:06] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'particle' in plugin Heart-Projectiles v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.dispatchCommand(CraftServer.java:790) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.network.PlayerConnection.handleCommand(PlayerConnection.java:1931) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1770) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1751) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:46) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:30) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.TickTask.run(SourceFile:18) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeTask(SourceFile:151) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
#
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeNext(SourceFile:125) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.MinecraftServer.bf(MinecraftServer.java:1148) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.MinecraftServer.executeNext(MinecraftServer.java:1141) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.util.thread.IAsyncTaskHandler.awaitTasks(SourceFile:134) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.MinecraftServer.sleepForTick(MinecraftServer.java:1125) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1054) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:305) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "org.bukkit.entity.Player.hasPermission(String)" because "this.player" is null
        at me.rockorbonk.candor.laptevsorder.LaptevsCommands.onCommand(LaptevsCommands.java:66) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[airplane.jar:3284a-Spigot-3892929-0ab8487]```
dusk flicker
#

read the stacktrace

hollow sand
#

I did

sacred mountain
#

java.lang.IllegalArgumentException: File cannot be null

crimson terrace
#

Im trying to edit a mobs attack damage but skeleton.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE).setBaseValue()
doesnt seem to work. Anyone know anything about this?

tardy delta
#

and make sure your file isnt null

sacred mountain
#

estup() first

tardy delta
#

uhh ye

#

your singleton goes brr

sacred mountain
#
        if (customFile == null) {
            setup();
            reload();
        }
        return customFile;
    }```
sacred mountain
tardy delta
#

static stuff

#

not really but meh

sacred mountain
tardy delta
#

no

#

just setup not both

sacred mountain
#

it said file cannot be null in the stack trace, so wouldnt if (customFile == null) not work

tardy delta
#

i guess setup sets up your file and the fileconfig

sacred mountain
#

hey how would i make it so i can use this syntax in a config file?

effects:
    - ABSORPTION:3:120
    - REGENERATION:3:8

EFFECT:AMPLIFIER:DURATION

PotionEffect effect1 = new PotionEffect(PotionEffectType.ABSORPTION, 120, 3);
player.addPotionEffect(effect1);
sturdy ivy
#

Do you guys recommend any config API?

lucid bane
#

org.bukkit.configuration.file.YamlConfiguration is great

vale ember
#

if i get player location in player move event is it the new or old one?

tardy delta
#

event.getLocation()?

vale ember
#

i know

tardy delta
#

or event.getPlayer().getLocation()

vale ember
#

i mean if i use event.getPlayer().getLocation() is it new or old one?

tardy delta
#

i guess the current one

vale ember
#

is it before or after movement

supple elk
#

I'm trying to return the value of what T is. Anyway I can do this?

tardy delta
#

wait there is getFrom and getTo

supple elk
vale ember
vale ember
vale ember
tardy delta
#

wont that work

visual tide
supple elk
#

I see

tardy delta
#

ah ๐Ÿฅฒ

vale ember
#

java erase all generics on compile

visual tide
#

new T().getClass() :kekw:

vale ember
#

it replace them with Object and insert cast

supple elk
#

I'll explain what I;m trying to do overall then

vale ember
#

so it'l be new ItemAbility(String key, Consumer<T> ability, Class<T> clazz)

#

and then you store it in field

#

and return it in your method

tardy delta
supple elk
#

basically I want to add abilities using persistent data containers. My plan was as follows: when an event like a right click occurs, look at the tags of the item. Tags would be an ability id, id would go into a hash map to get an ability, then check if the class of the fired event matched the event class of the retrieved ability. If it matches, fire the ability.

vale ember
supple elk
#

yeah which seems annoying

vale ember
#

that's annoying but it's the only way

supple elk
#

I could remove the generic

vale ember
#

it's not C#

supple elk
#

but that means having to cast in the consumer

vale ember
#

that's what java do on compile basicly

#

it remove generics, replace everything with Object and insert casts, thats also the reason you can't have primitive as generic type

supple elk
#

right

sacred mountain
#

how would i make it so i dont have to check the config value every time inside a listener

#

should i update all the variables in the reload()

vale ember
#

wat

crimson terrace
sacred mountain
visual tide
sacred mountain
#

i just thought it would be, whenever a player clicks a certain item it would have to open the file

crimson terrace
#

as ive been told its like a hashmap with a (optimally) runtime of O(1)

#

the config is always loaded I believe

sacred mountain
crimson terrace
#

np

crimson terrace
sacred mountain
#

also another thing about config, how do i make it save the old config to a different file if the config is messed up? and generate a new one. or maybe something like a version , so it would convert if necessar

#

@tender shard do you have the link to that one? I remember earlier someone said you had a good one

tardy delta
#

hey could you show an example if you got some time please?

#

im writing some sort of storage implementation but im not sure if i would delegate it

tardy delta
#

Does plugin.getLogger().log(Level.SEVERE, "something", exeption) also prints the stacktrace?

crimson terrace
#

i fixed it by using the EntityDamagedByEntityEvent

#

but I will look into it

mellow edge
#

what would be the best way to detect if an flying redstone machine goes to the specific chunk and then make it stop

opal juniper
mellow edge
#

or at least how to detect it

#

then I can just remove all the power like redstone blocks to stop it

tardy delta
opal juniper
#

doubt it

tardy delta
#

hm

vale ember
#

can i use onPluginDisable event instead of javaplugin's onDisable?

spiral light
#

why should you use that ?

#

also i dont think it would work probably

vale ember
#

also can i use event.getPlayer().performCommand() in playerquitevent?

tardy delta
#

the player is still there at that moment i guess

spiral light
#

i think so, but thats a tryandsee moment

dusk flicker
#

?tas

undone axleBOT
arctic moth
#

how do you set up mongodb with the plugin

vast shale
#

So currently I have a design that'll only show the enemies the player has encountered in their enemy catalog. I achieve this by, when attacking a new enemy, checking if they have that enemies specific permission, then giving it to them if not. Then in the enemy catalog GUI, I check for each of these permissions and make the enemy appear if they have it. Thus, I'll have about 60 unique permissions total for the enemies. My question is, is this efficient? Is there a better way of achieving the same thing?

arctic moth
quiet ice
vast shale
#

HashMap containing what? A UUID and List<String>/List<Integer>?

lavish hemlock
#

You'd actually want an enum instead of a string/int ID

vast shale
#

Wouldn't the hashmap have be to writen/read from a file on startup/shutdown?

quiet ice
#

Actually, Set<CustomDatatype> (CustomDatatype being a record(UUID, EntityType)) might be better here

#

And yes, you'd need to write/save it

tardy delta
#

better than permissions atleast

lavish hemlock
#

Means you can't just hit one once and then run and gain the entry.

#

So completionism is harder.

#

(Also means you have to kill the ender dragon/wither to get their entry)

#

But that's just some gameplay feedback.

vast shale
#

Gotcha, the way the battling works in my plugin, rewards are only added upon a battle end so that shouldn't be too bad

vast shale
tardy delta
#

oh npcs are entities too right?

#

wait

#

they are packets i guess

quiet ice
tardy delta
#

uuid maybe?

vast shale
#

There are multiples of the same enenmy

lavish hemlock
tardy delta
#

or wont that work if the npcs are no actual entities?

vast shale
#

I'm having trouble trying to think of how this EnumSet would work. Would the EnumSet be contained within a hashmap? And what would the EnumSet look like? I have enemies differentiated by name. So would the set contain "Enemy Name 1", "Enemy Name 2", etc?

lavish hemlock
#

I think it would work like

quiet ice
#

Usually you'd want to identify it using an enum, not using a string

lavish hemlock
#

HashMap<UUID, EnumSet<EnemyType>>, where UUID is the player who is assigned with the entries in EnumSet, and EnemyType is the enemies they've seen so far.

#

You do need to do a computeIfAbsent before accessing the value, since a player might not have one yet.

quiet ice
#

Alternatively Set<Map.Entry<UUID, EnemyType>>, which would reduce a lot of the enumset allocations

vast shale
#

Interesting

quiet ice
#

However it would be less efficent memory-wise if there are a lot of players with high completion, but would be more efficent if there are a lot of players with almost no completion

stuck flax
#

is there any issues with using YAML for large databases since I know JSON can be corrupted

vast shale
#

In both cases, what would the enum EnemyType be? Not too experienced in enums

vast shale
tardy delta
#

but i would use a db

lavish hemlock
#

My solution makes lookup time very fast.

stuck flax
quiet ice
#

Depends on your code, however I imagine something like this:

public enum EnemyType {
   ENEMY_TYPE_1,
   ENEMY_TYPE_2,
   ENEMY_TYPE_3,
   ETC;
}
quiet ice
tardy delta
quiet ice
#

Heh, useless microoptimisation

vast shale
#

Battle of the Java titans

lavish hemlock
# lavish hemlock My solution makes lookup time *very* fast.

(While I believing storing a set of entries is not only redundant (since HashSet uses HashMap underlyingly), but lookup requires an iterative process where you have to check contains multiple times, instead of a single get and iteration over the result)

stuck flax
tardy delta
#

ye if youre only storing that kind of stuff i think yaml is better

quiet ice
#

Also the monolithic map/set approach is far easier to make atomic which is why I usually use it over nested maps/sets as having "fully async capable" is probably a good (albeit useless) selling point

lavish hemlock
#

I mean you can just make a custom wrapper type

quiet ice
#

Although in this case I think both have more or less the same atomicity as long as you use putIfAbsent

lavish hemlock
#

Although in this situation I don't think he needs async

vast shale
#

Is there an advantage of putIfAbsent over .contains() == null?

#

acutally just if .contains()

lavish hemlock
#

I still recommend computeIfAbsent

vast shale
#

Got it

lavish hemlock
#

putIfAbsent requires you pass the value to put, which results in a useless allocation if you don't need to put a value in there.

#

While computeIfAbsent allows you to pass a Supplier function

vast shale
#

Interesting

tardy delta
#

what if he just wants to put a value?

lavish hemlock
#

Then put :p

tardy delta
#

well ye if absent

#

๐Ÿ˜Š

lavish hemlock
#

Well my point is that if the value isn't absent, a call to putIfAbsent does more than it needs to.

#

While computeIfAbsent does effectively nothing in the same situation.

quiet ice
#

I mean, the chance of there being a race condition is minimal enough so there isn't too much of a diff, but interesting to note

vale ember
#

how to fix mob (villager) looking down by default?

tardy delta
#

wdym it does more than expected?

#

๐Ÿ‘€

lavish hemlock
#

Not more than expected

#

More than it needs to

#

When you do putIfAbsent(key, new MyValue())

#

You have to instantiate MyValue to call putIfAbsent

#

while computeIfAbsent(key, MyValue::new /* () -> new MyValue() */) doesn't instantiate it until necessary

tardy delta
#

and in computeIfAbsent you could do MyValue::new

#

ah youre right

lavish hemlock
#

I'm pretty sure putIfAbsent exists as a pre-Java 8 method.

quiet ice
#
Object o = map.get(key);
if (o == null) {
    o = new Object();
    Object var10001 = map.putIfAbsent(o);
    if (var10001 != null) {
       o = var10001;
    }
}

In the rare case that something is added between get and putIfAbsent, the new Object allocation is useless there

lavish hemlock
#

Is that the decompiled code or smthn?

neon minnow
#

What is the best way to handle anti swear? Regex?

vale ember
#

what is the yaw and pitch for mob looking forward not down?

quiet ice
#

I have been looking at too much decompiled code so I start using stupid var naming

lavish hemlock
#

Good luck

lavish hemlock
#

It looks too much like decompiled code

#

It's the fact that you're storing each value in o

#

It reminds me of like

#

If the compiler did multiple ASTORE instructions to the same local

quiet ice
#

Yeah, this is intended and I do this very often in production code nowadays (just not with o as the var name)

lavish hemlock
#

Yeah the only time I will set a variable is like

#

Indices (i) and strings that I'm substringing

#

Otherwise I final all my locals.

tardy delta
#

local final variables ๐Ÿ˜”

vale ember
lavish hemlock
#

I like it, it makes the variables stand out more

tardy delta
#

void doSomething(@NotNull final Object o) ๐Ÿฅบ

lavish hemlock
#

Nah that's awful

#

Fuck final parameters

quiet ice
#

it can be useful if you suspect that you could accidentally set it to a value later on

lavish hemlock
#

Or final ARM resources

vale ember
#

do final paramters have any impact on performance or not?

lavish hemlock
#

final has no bearing on performance except for fields, I'm pretty sure.

quiet ice
#

Nope, the JVM discards access modifiers

#

Not sure if it also does with with fields

lavish hemlock
#

Well field access has to be optimized

#

Although

#

The compiler automatically inlines public static final

#

But yeah there's some hints that private static final is JVM optimized

#

Lemme find the post

lavish hemlock
#

If it's not inlined by the AOT compiler (Javac), it is by the JIT compiler.

#

(I actually ran into this quirk myself)

tranquil viper
#
String newDisplayName = format(target.getCustomName().replace(String.valueOf(alreadyStacked), String.valueOf(newAmount)));

Why would this be limited to 9? Once I get to ten it changes to this:

wary harness
#

guys there is a big exploit insta kill with bow works from 1.9 up to 1.18

#

any one has solutin for this

#

Altening: https://fortnite.thealtening.com/
Mod Download In Discord: https://discord.gg/ham
Saturns Discord: https://discord.gg/moles

dont read below all i did was steal Ishlaqs description for more views rofl @Shlaqlu get trolled

Like ParrotX2 and his School's Minecraft Server / School SMP Series where he Started a War or Ended a ...

โ–ถ Play video
wary harness
#

I was trying to decompile code

#

but it is obfiscated

#

you can't read shit

vast shale
#

So I have my HashMap<UUID, EnumSet<EnemyType>> but would there be a way to store the number defeated along with the EnemyType?

lavish hemlock
wary harness
quiet ice
#

fake

muted sand
#

how do i load a 5 chunk radius near a pair of x,z coordinates?
Is it just for-looping my ass off?

vale ember
quiet ice
#

Although, only 25 dislikes...

wary harness
lavish hemlock
#

Also gotta love that Fortnite sponsor in the middle of an exploit PSA

#

That's not sketchy

vale ember
vale ember
lavish hemlock
#

Currently, YT has just hidden dislikes but they're still recorded.

quiet ice
#

Nope, the extension guesses the dislike count based on users

lavish hemlock
#

In the future they'll be fully removed

#

I thought they didn't do that

quiet ice
#

They already removed the public endpoint

lavish hemlock
#

Oh

#

Yeah okay then

#

replaceAll uses regex, you probably want replace

neon minnow
#

fixed

young knoll
#

Still worst named method

#

0/10 oracle

lavish hemlock
#

Agreed

tardy delta
#

replaceRegex ๐Ÿ˜ถ

#

saw that

wary harness
lavish hemlock
tardy delta
#

im wondering what different database implementations i would use for my plugins storage

#

like i have one now a SqlStorage which uses either mysql or h2, cant make an apart one for h2 cuz it follows the same sql syntax

quiet ice
#

As long as it isn't an RCE I don't really care about this exploit

lavish hemlock
#

Yeah me neither lol

quiet ice
#

Even if it is real

lavish hemlock
#

I don't play on servers ever

worldly ingot
#

SQLite is the only one that comes to mind

#

Which has a different syntax than MySQL does

#

it's flat file though

minor fox
#

Does anyone happen to know where exactly the motY field in the NMS Entity class is edited when a player takes fall damage?

glossy venture
#

would be nice

tardy delta
#

mhm ye

neon minnow
#

I got a words array, how do I regex through the e.message to see if there are any words from words array in there? Thanks

red sedge
#

How can I get the empty slots?

glossy venture
#

if i understood correctly, you wont need regex for that

red sedge
#

of an inventory

neon minnow
#

.contains would not really help

glossy venture
neon minnow
#

because they can easily change it

glossy venture
#

oh

#

then include variations

neon minnow
#

so like regex would detect if they try circumventing

glossy venture
#

if you really want to you could split the string into words and check per word an error term

neon minnow
#

im not going to add thousands of iterations and variations when a regex could possibly solve it?

glossy venture
#

not regex

neon minnow
#

why not?

#

is it bad

neon minnow
glossy venture
neon minnow
#

oh right

glossy venture
#

i mean you would have to iterate over all words anyways

#

lemme work on a simple implementation

neon minnow
glossy venture
#

im not a regex expert but i dont think thats how regex works

tardy delta
#

you cant say shit meh

glossy venture
#

also please put it in a code block

neon minnow
#

give me the code block symbol

#

my keyboard is shite

glossy venture
#

"`"

neon minnow
#

ty

tardy delta
#

```kotlin would even better

neon minnow
#

dunno how to do it

tardy delta
#

just type it after the `

neon minnow
#

i did.....

#

fkin stupid

#

kotlin```val words: List<String> = arrayListOf("fuck", "shit")

    val wordsToMatch = "(" + java.lang.String.join("|", words) + ")"
    val x = e.message.replace("(?i)\\b$wordsToMatch\\b", "****")

    broadcastMessage(x)```
#

see

#

i wrote kotlin

#

and it goes green

#

but not the code ?

lavish hemlock
#

Developer: "Users shouldn't swear."
Developer: "shite, fkin"

quiet ice
#

this looks more like python than kotlin

neon minnow
#

???

neon minnow
lavish hemlock
#

why the fuck are you doing java.lang.String.join

neon minnow
lavish hemlock
#

Never use Java stdlib classes inside Kotlin

tardy delta
#

dont swear ._.

lavish hemlock
#

I'm pretty sure you can do words.join("|")

neon minnow
#

thanks

#

unresolved reference

lavish hemlock
#

Oh sorry it's joinToString

neon minnow
#

Type inference failed:

fun <T> Iterable<T>.joinToString
(
separator: CharSequence = ...,
prefix: CharSequence = ...,
postfix: CharSequence = ...,
limit: Int = ...,
truncated: CharSequence = ...,
transform: ((T) โ†’ CharSequence)? = ...
)
: String
cannot be applied to

receiver: List<String>
arguments:
(
String,
List<String>
)

#

val wordsToMatch = "(" + words.joinToString("|", words) + ")"kotlin

lavish hemlock
#

I wonder who was dropped on their head as a kid

#

Anyway

#

I said joinToString("|")

neon minnow
#

what the fuck?

lavish hemlock
#

No second argument

neon minnow
#

you alright?

lavish hemlock
#

And actually you can do

#

words.joinToString("|", "(", ")")

neon minnow
#

I told you it does not work

#

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:

lavish hemlock
#

Show me your code :p

neon minnow
#

Like this then?

#
 
        words.joinToString("|", "(", ")")
        val x = e.message.replace("(?i)\\b$wordsToMatch\\b", "****")

        broadcastMessage(x)```
lavish hemlock
#

Yeah that should work

#

Have you tried specifying the names of the arguments?

neon minnow
lavish hemlock
#

I am aware you're a beginner, it's quite obvious.

neon minnow
#

People make mistakes and ur being rude

glossy venture
#

?aste

#

?paste

undone axleBOT
neon minnow
#

Ok

glossy venture
neon minnow
#

doesnt work

lavish hemlock
#

The fact is your level of beginnerness doesn't matter in this situation, I gave you clear instructions :p

neon minnow
#

Still prints it for some reason

glossy venture
#

yo @neon minnow i wrote a very simple implementation

#

well not simple

#

but it only works for words of the same size

#

but you could just include both fuck and fck to check both

neon minnow
#

look at my code vs yours

lavish hemlock
#

Your code doesn't work.

neon minnow
#

im trying to make mine work

#

because its small

lavish hemlock
#

That's not a strong debate.

tardy delta
#

console saying shit hmm how will this end

neon minnow
neon minnow
glossy venture
#

i tested it and mine works

lavish hemlock
#

Orby's probably works p'well honestly.

neon minnow
#

it works but if there is a more optimized way to do it i would prefer that

lavish hemlock
#

Regex isn't optimized lmao

glossy venture
#

regex is slow af

lavish hemlock
#

It's for very simple operations

#

"Regular expressions"

neon minnow
#

your code is very long

glossy venture
#

you still have to go through every word

glossy venture
neon minnow
#

mh yeh

lavish hemlock
glossy venture
#

i added comments

lavish hemlock
#

Java is verbose.

neon minnow
#

i wonder why it didnt work

tender shard
neon minnow
#

i did everything the other person told me to do lmao

lavish hemlock
#

I personally dislike swear filters tho :p

glossy venture
#

also do you have any idea how long the code behind regex is

tender shard
#

at least 10 lines

glossy venture
#

if thats what you base performance off

lavish hemlock
#

Or they're shit and they have too many false negatives

#

And either way, I find them encroaching on my right as an American to speak my mind using endless amounts of swear words :)

lavish hemlock
#

Fuck shit piss balls ass fucker

tender shard
#

I'd rather have a filter that replaces nice words with bad ones

#

e.g. thanks -> fuck you

lavish hemlock
glossy venture
#

robloxs filter is shit

lavish hemlock
#

Indeed

glossy venture
#

like actual dogwater

lavish hemlock
#

See the best idea

#

Is to do swear filters incrementally

#

You add onto the filter as more swears are discovered by your users

lavish hemlock
#

Until eventually, you cover about 90% of cases

glossy venture
#

yeah

lavish hemlock
#

Because in that case, you only block the actual swears and not regular words

#

And you have a large list

tender shard
#

just let staff decide on who to mute / kick / ban

lavish hemlock
#

Or that lol

#

Personally I think swear filters are useless

tender shard
#

(fun fact, I once was on a server where you got warned for saying "merry christmas")

lavish hemlock
#

You can still make inappropriate or hateful comments towards people

#

Yeah

#

Like

tardy delta
#

wha if staff is absent af

lavish hemlock
#

Just look up the Unicode list of confusables

glossy venture
#

theyre always either easily bypassable or way too strict

lavish hemlock
#

๊ฌตucke๐—‹

#

That could make it past ^

#

And there's

#

SO

#

MANY

#

OTHER

#

LETTERS

young knoll
#

This is why my swear filters are always toggleable

#

Per player

lavish hemlock
#

You can still say the word "dick"

#

By just making innuendos

glossy venture
#

yeah

#

and saying i hope you die in a hole will still pass but fuck wont

lavish hemlock
#

Lmao yeah

#

Unless you want to block "die"

#

In which case

#

"dang I just died"

#

gets covered too

#

and that's problematic in a VIDEOGAME

glossy venture
#

yeah but its so short it would probably affect many other words too

lavish hemlock
#

diet? lmao

#

lmao

#

but yeah there's also the other definition of die

glossy venture
#

lmao

lavish hemlock
#

the singular of dice

glossy venture
#

yeah

#

and did is simalar

lavish hemlock
#

I did your mom last night

glossy venture
#

so if you have a bad algorithm it might match that

young knoll
#

With a toggleable filter you encourage people that want to swear to just turn off their filter

#

And if they bypass it for some dumb reasons, you mute them

glossy venture
#

everyone knows that you are superior if you did someones mom

quiet ice
#

gotta love having a non-complete fontset

lavish hemlock
#

The real solution is just

#

Having staff

#

lol

glossy venture
#

inferior

lavish hemlock
#

Although actually

#

Staff could misinterpret something

#

And then falsely ban someone

#

So fuck staff

#

Let's just employ robots

young knoll
#

AI isnโ€™t perfect either

glossy venture
#

you could train a neural network to do it

vocal cloud
#

Ban all words. Allow only the happy and sad emojis

lavish hemlock
#

Invent time travel

#

Go into the future

glossy venture
#

thats actually not a very bad idea

lavish hemlock
#

Kidnap a robot

#

PFFF

glossy venture
#

lmfao

vocal cloud
#

Lmfao

#

Link it to your servers chat, filter it through it and voila

lavish hemlock
#

That's why your chat log should include the uncensored versions

glossy venture
quiet ice
#

I got banned from a discord once because is said "I knew this was going to happen" after a plugin the server admin made broke down

#

Humans are the worst thing on earth

vocal cloud
tardy delta
vestal moat
#

Does changing the player display name in tablist (using packets) modify the name above player head too?

vocal cloud
lavish hemlock
#

What

#

I'm 16

glossy venture
#

lets go i can just use it

vocal cloud
lavish hemlock
#

Damn ok then

#

Y'know what would be funny?

#

If I just put in one of my own opinions

#

And saw how "toxic" it was

glossy venture
#

yes

vocal cloud
#

Because you wrote it wrong

glossy venture
lavish hemlock
glossy venture
#

or offensive

lavish hemlock
#

I am 92% likely to be toxic.

#

Perhaps if I remove the expletive...?

glossy venture
#

bruh the bot is very sensitive

lavish hemlock
#

Hah

vocal cloud
lavish hemlock
#

Removing the swear removes the meter

#

So I guess we learned swears are toxic ๐Ÿคทโ€โ™‚๏ธ

opal juniper
lavish hemlock
#

Oh and apparently

#

"bitch" is less toxic than "asshole"

#

B-B-BUT BITCH IS TOXIC TOWARD WAmeN

glossy venture
#

where can i try it

lavish hemlock
#

Scroll down

#

Okay what the fuck LanguageTool

vocal cloud
# opal juniper is this free?

Last I checked you have to request access. I still happen to have my old keys that have infinite requests uwu . I was one of the first people to get in

lavish hemlock
#

Why are you suddenly in tacoland

#

I know but it's so funny :)

opal juniper
glossy venture
#

how is it less toxic than what maow said lmao

lavish hemlock
#

I like how my opinion is more toxic than literally "die"

glossy venture
#

exactly

opal juniper
#

maow is toxic

lavish hemlock
#

Ig I'm just toxic then

opal juniper
#

who thought

lost matrix
#

try "rosette stallion"

lavish hemlock
#

But yeah we learned this API is

#

Not that great :p

opal juniper
#

not toxic

vocal cloud
lavish hemlock
#

Also "ass" is 90% toxic

#

Lemme just like

#

Copy-paste some erotic fanfic in there one sec

opal juniper
vocal cloud
opal juniper
#

fine

#

they take all my personal data every day

glossy venture
#

"shit" is more toxic than "shitter" while "shitter" is like a direct insult

lavish hemlock
#

WHY DID I THINK THIS WAS A GOOD IDEA

glossy venture
#

lmfao what happened

opal juniper
#

got banned

#

hopefully

glossy venture
#

put bee movie script in

#

see if you can crash the servers

lavish hemlock
#

84% TOXIC

#

PORN IS 6% LESS TOXIC THAN ME

#

HA HA HA AHA

glossy venture
#

lmfaoo

neon minnow
vale ember
#

what's the yaw and pitch to make villager look forward not down????

opal juniper
#

well, its less toxic. we arent talking about morally correct though

lavish hemlock
#

It had the word "dick" in it tho that's a swear ๐Ÿ˜ฅ

opal juniper
opal juniper
glossy venture
#

sad its not giving me an answer

opal juniper
opal juniper
#

or like too long

#

or fine

vale ember
opal juniper
vale ember
opal juniper
#

try it

#

it might work

lost matrix
vale ember
lost matrix
#

You can define pre spawn method calls

opal juniper
#

seems like more work than just teleporting it but who am i to judge kek

opal juniper
lavish hemlock
#

Means his log is still printing the swear

#

Even when it shouldn't

#

So his filter is broknekn

lost matrix
#

T entity -> World#spawn(Class<T>, Consumer<T>) or something like that

vocal cloud
#

I mean roblox took what 7 years to make their chat filter semi decent and it makes life hell on earth to talk? Why write your own

neon minnow
#

anti swear chat msg replace

vale ember
#

also simple regex wont be able to filter special symbol replacments like $hit or A$$

lavish hemlock
#

So basically

#

What all of us are trying to say is:

#

Stop trying to make a swear filter, it will be broken no matter what.

vocal cloud
#

Another person trying to create something that only a human moderator or a billion dollar company can put together

vale ember
#

ฦ’รœck

lavish hemlock
#

I funked your mom last night

#

Just bypassed the swear filter :)

neon minnow
#

Im not trying to make a perfect anti swear. I am trying to make an anti swear, that works....

vale ember
#

รŸitch just replaced b with german sz lolll ๐Ÿ˜„

neon minnow
#

A simple one... actually..

young knoll
#

Nothing wrong with having a basic chat filter

vocal cloud
#

Just do what AQ worlds did and have canned chat. Allow for only select responses

lavish hemlock
#

lol

young knoll
#

If you make it per player and toggleable people tend not to bypass it as much

#

IMO

lavish hemlock
#

The only chat filters that actually work

#

are the ones that block links :p

opal juniper
lavish hemlock
#

(if they're implemented properly)

neon minnow
#

I said a simple filter, the one im working on that is about 10 lines of code. not a full api with listeners, events, commands and a range filter

vocal cloud
#

It's also Kotlin which reduces the amount of people who can help

neon minnow
#

Kotlin is not as bad as you make it out to be

opal juniper
#

we never said it was bad

#

we just dont know it

neon minnow
#

No but you are acting like it is

vale ember
#

no one said it's bad, just less people know it

neon minnow
#

Hm

vocal cloud
vale ember
#

java is simply more popular especially in spigot community i think

lavish hemlock
#

I love Kotlin ๐Ÿ˜ and I know it

#

I am a Kotlinsexual

#

Sexually attracted to that sweet-ass programming lang

#

slurrururruyrrurrrurrp

opal juniper
hexed hatch
#

In three words, convince me to use Kotlin over Java

tardy delta
#

very sweet ass

young knoll
#

Not the bees

opal juniper
#

my face when

young knoll
#

My name Jeff

hexed hatch
#

Iโ€™m convinced

lavish hemlock
vale ember
opal juniper
#

DONT YOU DARE ๐Ÿฎ ME

tardy delta
#

emotional damage

vocal cloud
lavish hemlock
#

Oh yeah that's a good one

opal juniper
#

wait how

#

surely if sommin is null

lavish hemlock
#

Kotlin practices null-safety within its standard library

tardy delta
#

can it even cause a npr?

lavish hemlock
#

There's "platform types"

tardy delta
#

it has ? operator

lavish hemlock
#

Which are unknown if they're null or not

#

Yeah but it also has the !! operator

young knoll
#

When will java get ?

lavish hemlock
young knoll
#

:c

tardy delta
#

isnt it something like obj?.something()?.something()

lavish hemlock
#

Yeah basically ?. does a null check before calling something

hexed hatch
opal juniper
#

what happens if its null

young knoll
#

You die

lavish hemlock
tardy delta
#

and the method signature expects for example a boolean?

vale ember
#

java have optional api which basically sucks, but mean that java won't introduce ?

young knoll
#

Honestly though java should have that

opal juniper
#

but what if the thing is assigning a var that is used later

#

how does that work

lavish hemlock
#
val s: String? = getNullableString()
#

Nullable types

#

They force you to use ? or !!

tardy delta
#

what about something like

fun returnSomeBoolean() : bool {
  yield obj?.methodToReturnBoolean()
}```
#

thats my own kotlin smh dont blame me

tardy delta
#

ah nullable types

#

like in c#

lavish hemlock
#

The return type of a method called from a nullable type is made nullable

#

although

#

If you want to specify a default if it is null

vale ember
#

can i do something like new T() in kotlin with generics?

lavish hemlock
#

You can do obj?.method() ?: true

tardy delta
#

: default after it

#

ye

#

smth liek that lol

lavish hemlock
#

There's no way for the compiler to know how many args in the type

lavish hemlock
#

But there are reified generics if you want to use reflection

tardy delta
vale ember
#

well basically can't compiler insert Class<T> arguments and use reflecton but make a reified generics illusion?

lavish hemlock
#

Nah

#

The compiler only allows reified generics for inline functions

#

I think generating reflection is unwise for Kotlin

#

Since it adds a lot of slowdown the developer won't notice unless they decompile

#

Or know the intrinsics of the operation

vale ember
#

like

public void <T> myMethod() {
  return new T();
}

// Will be replaced with at compile time


public void <T> myMethod(Class<T> clazz) {
  return clazz.getConstructor().newInstance();
}
tardy delta
#
class MySpaghettiCodePlugin {}```
lavish hemlock
#

That's also just error-prone

#

Like there's no way to validate it

#

It'd be better to do what C# does and have generics validation in a where clause

tardy delta
#

applicable in some plugins

vale ember
lavish hemlock
#

e.g.

#
where T : (String, Int)
#

I think this would be cool ^

vale ember
lavish hemlock
#

It would also actually allow for structural typing on the JVM

lavish hemlock
tardy delta
#

catch (Exception e) where e.getMessage().startsWith("unknown character") {} would be great

lavish hemlock
#

It was only like

#

Somewhat recently .NET Core existed

lavish hemlock
vale ember
#

and then re-throw exception if the statement isn't satisfied

lavish hemlock
#

Yeah

tardy delta
#

meh

lavish hemlock
#

Actually

#

Kotlin does have a where clause

#

But it's not that cool

tardy delta
#

i like it being fancy

lavish hemlock
#

It's just for when you have messy code

#

And you need to put the superclass/subclass of a generic at the end of the method header

#

e.g. fun <T> myMethod() where T : MyType

tardy delta
#
class MySpaghettiCode {} where programmingKnowledge = 0```
lavish hemlock
#

I must be an Italian chef because all of my code ends up as pasta.

tardy delta
#

saw someone calling his exceptions calling ingredients and then like throw pasta

#

throw owo kekw

lavish hemlock
#

throw pasta()

#

throw owo()

lavish hemlock
#

And fuckin' punt them

#

Out a window

opal juniper
#

bin maow

red sedge
#

How can I convert a set<string> to a list<string> Im trying to get the keys from a configuration

lavish hemlock
#

No.

lavish hemlock
#

Although I don't see how that stops you

#

from getting the keys

tardy delta
#

why not just working on the set?

lavish hemlock
#

Yeah

tardy delta
#

if you need #get okay

red sedge
#

i do

#

i need get

tardy delta
#

for looping?

red sedge
#

mm

#

no

tardy delta
#

for pasta?

lavish hemlock
#

I don't understand

tardy delta
#

๐ŸคŒ

lavish hemlock
#

Why do you need get?

tardy delta
#

to get the pasta

red sedge
#

im trying to make a page system so i for example i need the values in indexs between 15 and 30 or 45 and 60

lavish hemlock
#

Oh I see

#

That's reasonable ig

#

Althooough

#

I think there's a sub-collection method one sec

tardy delta
#

List#subList?

lavish hemlock
#

...Nope

#

Anyway

#

Yeah so just convert it to a list then that's fine

tardy delta
#

wth

#

poor kids

lavish hemlock
#

This is fuckin' great

tardy delta
#

olive oil

red sedge
lavish hemlock
#

It does exist

#

Convert it to a list

lavish hemlock
kind hatch
#

subList returns a List, so just assign the return value to a new one.

lavish hemlock
#

I should make my own JVM lang

#

That'd be sweet

red sedge
#

so

List<String> keys = new ArrayList<>(dataConfig.getKeys());
List<String> pageKeys = keys.subList((currentPage - 1) * viewSlots, currentPage * viewSlots);```
lavish hemlock
#

Yeah probably smthn like that

tardy delta
slender widget
#

How do I make a spigot plugin with Visual Studio Code?

tardy delta
#

shame

languid schooner
#

What version of spigot added the text component stuff? (Clickable/hover text etc)

alpine urchin
#

for me using IntelliJ has been a better experience.

dusk flicker
#

iirc that component stuff has been there forever

alpine urchin
#

Visual Studio Code has Java plugins, but wasn't designed for Java,

alpine urchin
#

my guy is using 1.4

#

so he isnt sure

#

if its there

#

xd

dusk flicker
#

are you joking?>

alpine urchin
#

no

#

yes

kind hatch
tardy delta
#

how to add dependencies ๐Ÿ‘€

slender widget
#

But how do I get started? Because on IntelliJ there is a plugin for that

dusk flicker
#

you dont need any plugin to make a spigot plugin

#

ide plugin, i mean

#

Sure it can be helpful, but isn't required if you have basic java knowledge

kind hatch
#

Wdym there is a plugin? IntelliJ just supports the language out of the box. You donโ€™t need anything special to start making Spigot Plugins. You just need the API.

dusk flicker
#

I think they mean the minecraft development plugin

#

which basically creates the outline of the project already

#

basically skips step one but people use it off the start and never learn how to just do it on your own

tardy delta
#

i think its less laggy than intellij

#

using vsc

kind hatch
#

I forgot I have that installed. I just create the projects from scratch. Lol

slender widget
#

Okay, so how do I do that. Is there like an instructions page?

kind hatch
#

There are a few ways. Question is how you want to do so?

Doing it manually.
OR
Use a dependency manager like Maven or Gradle.

tardy delta
#

oh theres a maven tab in vsc

#

failed to calculate pom

#

uhm nice

slender widget
#

Is Maven or Gradle better?

blazing scarab
#

Gradle

lavish hemlock
#

It's personal opinion

kind hatch
#

Havenโ€™t actually tried gradle so I canโ€™t comment on it.

lavish hemlock
#

I'd recommend Maven because it has a lot less odd errors

#

Although Gradle is more concise

blazing scarab
#

gradle is simple as dick much less verbose

lavish hemlock
#

Yeah

#

Which is why I use Gradle lol

#

But it's still pretty shit :p

slender widget
#

Well, lets go with Maven then

kind hatch
#

Setting up a maven project is easy with IntelliJ as itโ€™s a preset. Im not sure how Visual Studio Code handles it. If it even supports it.

lavish hemlock
#

Eh it probably does

patent horizon
#

im trying to build my project and this keeps popping up

lavish hemlock
#

Hmm

tardy delta
#

org.gradle oh god

lavish hemlock
#

Do you have any folders open

patent horizon
#

like in the project structure?

lavish hemlock
#

In your file explorer

#

Sometimes Gradle errors on me during compilation if I have a folder open that it's trying to modify :p

#

Otherwise, try killing the daemon if you have it enabled.

kind hatch
#

Maven does that too, but only if you have a file open with another program.

patent horizon
#

would you want my build.gradle ? or would that not be linked to the problem

lavish hemlock
#

Maybe it is

#

Idk, with Gradle it's really hard to tell :p

patent horizon
#

?paste

undone axleBOT
patent horizon
opal juniper
#

redlib ๐Ÿคฉ๐Ÿคฉ

patent horizon
#

mhm

#

redlibs the reason i aint using maven anymore

#

shading it w/ relocation is complicated there

lavish hemlock
#

I'm probably gonna either

#

switch to Maven

#

or finish my buildsystem and switch to it

tardy delta
#

imma use java 16 uwu

#

for the first time in my life

patent horizon
#

i think this might be the problem

vale ember
#

fucking intellij

#

i use gradle from cli

#

gradle init

sacred mountain
#

hey anyone know how to create a configuration section like this, and print it in chat?

the screenshots are what i have so far

#

theyre a bit jumpled

patent horizon
tardy delta
#

thats a list not a section

vale ember
sacred mountain
patent horizon
#

oh

#

:(

vale ember
#

intellij dont work fine with jdk 17 and gradle together

tardy delta
#

just fileconfig.set("help-message", someList)

patent horizon
#

is it possible to run a java 16 plugin on 1.18?

sacred mountain
#

in chat

vale ember
#

new jvm shoudl be able to interpret older bytecode AFAIK

lavish hemlock
#

Yeah

#

The JVM is backwards-compatible

tardy delta
lavish hemlock
#

Like all the way to JSE 1.0.2

brave sparrow
lavish hemlock
#

The bytecode is

#

The stdlib? Not so much

brave sparrow
#

Lol

patent horizon
#

๐Ÿคฉ

lavish hemlock
#

Like finalize is being deprecated for removal.

sacred mountain
#

how would i add it to an item lore? the same thing but with meta.add

vale ember
kind hatch
brave sparrow
#

And removing access to internals

patent horizon
lavish hemlock
patent horizon
vale ember
tardy delta
#
for (String s : fileConfig.getStringList("path")) {
  plugin.getLogger().info(s);
}```
sacred mountain
#

yeah ok cool

patent horizon
#

tbh i haven't really found a practical use for kotlin over java yet

#

just seems like a lifestyle thing

tardy delta
#

or just .forEach(logger::info) kekw fancy way

vale ember
patent horizon
#

ah

#

it doesnt support kotlin either

#

at least not as far as i know

vale ember
#

the intellij plugin dont

patent horizon
#

mhm

sturdy ivy
#

Can anyone help solve this puzzle? Why I'm getting 0 UNIX time?

patent horizon
vale ember
sturdy ivy
patent horizon
#

march 21 2022

#

that aint today

sacred mountain
#

that should work right

sturdy ivy
#

I'k its my birthday xD

patent horizon
#

ah

kind hatch
#

Why not save the date as a Unix timestamp and then convert it with Date?

sturdy ivy
patent horizon
sturdy ivy
#

And was pretty sure that was working but unfortunately not.

tardy delta
#

and logger not Logger

kind hatch
tardy delta
#

or well if its some kind of implementation nvm

sturdy ivy
vale ember
sacred mountain
#

im usre theres an easy way

tardy delta
patent horizon
vale ember
sacred mountain
# tardy delta

i can just create a new arraylist and add the lores in aloop that way

#

and then set the lore to the arraylist

vale ember
tardy delta
sacred mountain
#

List<String> lore = new ArrayList<>(configFile.getFireballLore());

#

there we go

#

this.fbmeta.setLore(lore);

vale ember
#

not sure if it is the best way, but you can check for PlayerCommandPreprocessEvent and check if the command is "unban"

#

also if you're using some plugins they may have custom storage system

#

for ban lists

tardy delta
vale ember
#

so if you're using some plugin then you should consult to it's api, idk about vanilla system

tardy delta
#

then you dont need new ArrayList

sacred mountain
#

i cant think rn

lethal coral
#
        EntityIllagerWizard.Spell spel = EntityIllagerWizard.Spell.valueOf(spellname.getSingle(event));
        if(evoker.getSingle(event).getType().equals(EntityType.EVOKER)){
            CraftLivingEntity entityLiving = (CraftLivingEntity) evoker.getSingle(event);
            EntityEvoker entityEvoker = (EntityEvoker) entityLiving.getHandle();
            entityEvoker.setSpell(spel);
            entityEvoker.setGoalTarget(((CraftLivingEntity) entity.getSingle(event)).getHandle());
            Class<?> outerClass = entityEvoker.getClass();
            Class<?> innerclass = outerClass.getDeclaredClasses()[1];
            try {
                Method m = innerclass.getMethod("j");
                m.setAccessible(true);
                m.invoke(entityEvoker);
            } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }

This is successfully making the evoker target me, but it doesn't execute the spell I'm referencing

lethal coral
#

just nothing happens

vale ember
#

yeah, probably, the PlayerCommandPreprocessEvent just was the first thing in my head, but u'r right

#

but if you're using some punishment plugin the best way is to use their API

#

then use PlayerCommandSendEvent

#

BUT, note that if the player's name was manually removed from banned-players.json you won't detect this!!

#

the banned player names are stored in a file called banned-players.json

#

if someone manually remove someone's nickname from it

#

you wont detect it

#

[
{
"uuid": "30f66a0c-ba36-4cdd-a4c0-4037e3a57579",
"name": "Aregcraft",
"created": "2022-02-12 23:09:20 +0400",
"source": "Server",
"expires": "forever",
"reason": "Banned by an operator."
}
]

#

like this

#

idk

#

but you should be aware that that's possible

lethal coral
golden turret
#

how could i ignore the defense from a single part of the armor in the EntityDamageByEntityEvent

torn badge
tardy delta
#

hey @ivory sleet

#

should i delegate my database storage to give it different implementations?

#

however i need completablefutures everywhere so i dont see that much sense

#

im having like an storage interface which gets implemented for some database types, all sync and then i have a delegatingstorage which wraps itself around the implementation and has the methods with the futures to do the stuff async

worldly ingot
#

May come in handy. That's how I went about it. Granted very simple stuff I need to store, but useful

tardy delta
#

ayy thanks

#

could indeed help me

tame iron
#

is there any implementation of setting the number of slots depending on the server load (tps)?

dusk flicker
#

prob better to actually find the cause of the lag

#

Id say tps isnt a good metric to change slots based on

weak wasp
#

Was going to say, most people are like how do I get the other x thousand people on the server before tps drops.

tame iron
#

I want to make an unlimited number of slots as long as the server can maintain stable operation.

dusk flicker
#

you will need a lot more metrics then tps then

#

I'd say you are jumping down a rabbit hole that you don't want to be

#

It obv depends on server type, but if you really want thousands of people on a server consider splitting them up across multiple servers with linking with redis or something

#

obv for certain gamemodes that wont work

tame iron
#

After all, the number of people the server can handle depends on the activity of the players at any given time

weak wasp
#

Yeah, in past bandwidth plugged up before CPU and Memory resources did. In the past however, the driving of traffic to your server from the clients, would basically just "rearrange" the internet to get you the bandwidth you needed.
ISPs have changed though...

dusk flicker
#

bandwidth would def be a thing yeah

#

all those packets would be insane

#

If you really want to do it off tps, you can just get the tps and come up with a formula to calculate player slots based on that

tame iron
dusk flicker
#

have you tested that? Any server optimizations? etc

tame iron
#

I just thought that there should already be a plugin for such a task

spiral light
#

70 players is a lot and i believe 70 players with no optimizations in 1.8 for example will cause laggs too

dusk flicker
#

eh

sacred mountain
#

YOOOOOOOOOOOOO i just spent 4 hours making a plugin without testing it once, and it worked FIRST TRY WTF

dusk flicker
#

it wont be much lag but it could be some

#

ive seen 1k+ players on a 1.7 server, and thats not as optimized as 1.8

#

Of course thats a highly optimized server

spiral light
dusk flicker
#

Very true

#

Low end hardware you might struggle with 10 players lol

spiral light
#

but i never saw an server with 100 players that had no optimizations to work lagg-free

blazing scarab
#

Lets be honest, minecraft is not scalable at all

#

Rn it is designed like a game to play with friends, having 20 players on server maximum

dusk flicker
#

the optimizations have gone to shit yeah

blazing scarab
#

I mean, mojang never cared about optimization too much

#

1.12.2 was just lightweight

sacred mountain
#

the command works but it sends that in chat

#

anyone know hwy

blazing scarab
#

Do you return false in onCommand?

dusk flicker
#

prob returned true

young knoll
#

Returning true doesnโ€™t send the message

dusk flicker
#

or whatever condition gives the alias

young knoll
#

False does

dusk flicker
#

cant remember which one lol

sacred mountain
#

so i just return true for everything

blazing scarab
#

That also looks like a tab completion message

sacred mountain
blazing scarab
#

thats client side

sacred mountain
#

oh

young knoll
#

Return true if you donโ€™t want the usage message

#

Tab complete stuff doesnโ€™t appear in the chat

sacred mountain
#

does in 1.8

young knoll
#

Ew 1.8

sacred mountain
dusk flicker
#

i spent a month making a plugin and it worked first try

#

minus the database stuff ofc

#

but I knew that wasnt gonna work

weak wasp
#

I have not had more than like 12 people on a server I host in recent history, but back when I was in high school (which I am now 31) I had version what ever of Minecraft from 15-ish years ago, hardware from 15 years ago, and we had over 250 people on one server in one world with integrated proximity TeamSpeak chat, and performance was fine.
I would worry more about giving people a reason to get on and play, than whether your set up can support an amount of people.

#

That was bukkit too, spigot did not even exist back then.

sacred mountain
#

ah yes minecraft in 2007

weak wasp
#

I think that's why there is a sect of people that build Bukkit servers using 1.8, then do something which I have no clue about to like meld the versions together. Like the servers that stay up even when the updates come out without them updating the server.