#help-archived

1 messages Β· Page 117 of 1

sturdy oar
#

Y

gleaming helm
#

I have 876 commits on a private gitlab repo for a project where I'm the only developer

steady cedar
#

Yeah?

sturdy oar
#

I'm rewriting some old repository branch

steady cedar
#

So this will be a public resource?

sturdy oar
#

and making it better

#

It already is

#

just rewriting it

steady cedar
#

No, your version

#

will it be a public version?

sturdy oar
#

yes it will

steady cedar
#

and three years down the line you'll stop supporting this project I assume?

keen compass
#

Even if it becomes a public resource, those who choose to rely on the project for whatever they intend shouldn't be the problem of the creator especially if they don't intend on creating an API for it.

gleaming helm
#

what.

sturdy oar
#

I mean I don't know if i'll stop supporting

gleaming helm
#

Trust me you will

steady cedar
#

yes you will

keen compass
#

If I always worried about what others are going to do with my projects I would never get anything done XD

sturdy oar
#

I've just published it

#

at least not now

steady cedar
#

@keen compass no, you'd just be more careful

#

lol

tiny dagger
#

you're making a mindset for yourself and you'll do this automatically forward

sturdy oar
#

I will remove it when I know i won't update it ever again

tiny dagger
#

you're training to do less mistakes but you need to start somewhere

keen compass
#

yeah my mindset is to not worry about what everyone else will do with my projects since the majority of them are open source anyways if they want to change it, they can πŸ˜‰

sturdy oar
#

Yeah frostalf i have everything opensource as well

#

but under GNU Affero license

steady cedar
#

Your mindset will get you calls late at night in the corporate world asking for how code you wrote works.

#

Because nobody in the team can understand why you made a specific choice

#

Β―_(ツ)_/Β―

keen compass
#

@steady cedar doesn't happen to me mainly because I ensure it is documented as to why something is the way it is.

sturdy oar
#

Yeah I like documenting as well

keen compass
#

if someone can't understand its purpose beyond that, they shouldn't have any business touching it then

sturdy oar
#

I think every single method i have is documented

steady cedar
#

Do you declare why you use a specific Map implementation?

gleaming helm
#

I'm saving that comment lmfao

steady cedar
#

Or rather

#

Do you declare why you retain the type of a specific Map implementation?

gleaming helm
#

Retaining a type like that is a really dumb idea unless you have a REALLY good reason to do it.

keen compass
#

except everyone's argument for not doing it is also weak though....so I mean if they want to use a specific type let them lol

steady cedar
#

What's your strong argument for doing it?

gleaming helm
#

You've never maintained software that isn't your own have you

keen compass
#

I have

gleaming helm
#

[x] doubt

keen compass
#

doubt all you want

#

doesn't change facts because your opinion differs

steady cedar
#

Facts?

gleaming helm
#

My opinion is rooted in multiple years of corporate experience and almost a decade of experience in software development

weary harness
#

yo boys id like to ask a question, but your discussion is crowding up this channel

steady cedar
#

@weary harness ask away

gleaming helm
#

So I'd say my opinion about this topic has a bit more weight than the average person here

weary harness
keen compass
#

except this isn't corporate software being created

steady cedar
#

scroll up @weary harness

weary harness
#

no

steady cedar
#

with your mouse wheel

#

on chat

weary harness
#

i mean the line isnt finished

gleaming helm
#

He's asking about the ...

weary harness
#

its like this...........

steady cedar
#

oh

#

Weird

gleaming helm
#

I think you have to use a custom help plugin or a custom help command to fix that

#

That's the standard behavior

weary harness
#

i think its bukkits /help command

#

but cant seem to find anywhere to edit that

steady cedar
#

It is, yes

#

Well it's because of the minecraft chat width

weary harness
#

i changed chat width, didnt help

#

cmi help did work

#

but thats not handled through bukkit

keen compass
#

that is normal behavior, if one does /help (Specific command) that is listed they should get the full output of that command

#

instead of a condensed version

weary harness
#

so

#

your grammar isnt really right

#

is it normal or not

keen compass
#

now the reason it works just fine in the console is because the console and server are one in the same, that is the console is not bound by the chat restrictions

weary harness
#

yes

keen compass
#

it is normal behavior not sure how what I said was confused

weary harness
#

they should get the full output of that command

keen compass
#

the reason it is normal is to prevent multi-lines breaking up trying to see all the commands

sturdy oar
#

Frostalf

#

do you think this is documented properly?

steady cedar
#

That's what I call over-documentation

keen compass
#

looks good to me

tiny dagger
#

yeah

weary harness
#

i mean youre not really answering my question @keen compass

#

is there a way to change any of that

undone narwhal
#

No

steady cedar
#

@weary harness Do you want the description to split into the next line?

weary harness
#

yes

sturdy oar
#

I don't think you can do it tbh

keen compass
#

Not without using reflection

undone narwhal
#

Use a custom plugin Mondo

steady cedar
#

You're going to have to modify the help command in spigot.

keen compass
#

or taking over the help command in a custom plugin

weary harness
#

i could find where idriz, saw nowhere a setting or anything like this

sturdy oar
#

/help <command>

weary harness
#

@keen compass reflection?

sturdy oar
#

and you will get full text I think

weary harness
#

iknow fendi

steady cedar
#

@weary harness You'd have to modify the help command's code.

weary harness
#

oh

sturdy oar
#

Idriz it would just be a mess

#

it would spam the chat so bad

weary harness
#

i want it for a particular thing

keen compass
#

the base help command isn't really to list what each command is for though, its main purpose is to list the commands that are available. The small amount of text that comes with it is just a plus.

weary harness
#

i wanna fix some documentation for my server

sturdy oar
#

I think you should rely on something else than Bukkit help messages

weary harness
#

and those help things are nice so i dont have to figure out who has which permission

#

any tips?

#

i thought this was quite easy, and if it would print out the whole line i could do it easily

keen compass
#

If you really want to change how it is outputted you are only left with two options both of which require a custom plugin. Well there is a third option and you could just modify the server code directly to change its behavior.

weary harness
#

"its main purpose is to list the commands that are available. The small amount of text that comes with it is just a plus." thats enough for me

#

yeah i cant modify server code, so what are the other 2?

keen compass
#

Custom plugin. Either take over the help command and catch when someone runs /help and output what you want

#

or use reflection to change the servers behavior

sturdy oar
#

he's not a programmer i think

weary harness
#

whats reflection?

keen compass
#

There might be plugins that exist already that do this

weary harness
#

im not @sturdy oar

sturdy oar
#

yeah u cant use reflection then

#

need to find someone that has already done that

weary harness
#

okay

#

so ill go find a plugin that can help me then, anyone familiar with any help plugins?

sturdy oar
#

I'm not sure but

#

didn't EssentialsX

#

have a decent help messages handling

weary harness
#

i think it does, but i use CMI already

sturdy oar
#

🀦 oof

#

idk then

weary harness
#

oh

weary harness
#

thanks for the help boys, ill have a look into help plugins

frigid ember
#

mondo its not official to have official in ur name πŸ˜†

keen compass
#

lol

frigid ember
#

lol ur pfp

weary harness
#

LOL

#

i am the official mondo tho

#

cmon

frigid ember
#

some people have og in their name, like bruh thats even less og

#

og is worse

#

so ur good

weary harness
#

LOL

keen compass
#

@sturdy oar Essentials doesn't allow the ability to control it though

weary harness
#

og mondoofficial is my next nickname

sturdy oar
#

)= big sad

frigid ember
#

😦

#

mondoofficialyt

#

yt is like bruh

#

if u have yt in ur name

#

leave lmao

keen compass
#

But I posted a link to a plugin that allows custom help pages though

weary harness
sturdy oar
#

can you bring useless discussions to #general @frigid ember

frigid ember
#

mondoytofficialogsubscribetotseries

sturdy oar
#

ty

weary harness
#

i saw that frostalf, ill have a look

frigid ember
#

frostalf isa real unique name

#

mondo also but rip Mondo itself is takenr ight

keen compass
#

It doesn't come from the game

#

in case you are curious

weary harness
#

yes retro

keen compass
#

my name precedes the game πŸ˜›

frigid ember
#

i never heard of the game

#

so -10 og

#

lmao

weary harness
#

😦

frigid ember
#

u chose a game name

#

so it not og rip

keen compass
#

Dark age of Camelot is the game most people think my name comes from @frigid ember

open mantle
#

how to make day/night in MOTD

frigid ember
#

i don;t know what it is

#

dark age of camelot

open mantle
#

(

weary harness
#

wdym @open mantle

keen compass
#

Anyways my name is derived from Norse language

weary harness
#

ah i see you want good day or good night zelen?

open mantle
#

-_-

keen compass
#

are you making a plugin or are you asking if a plugin does it? o.O

weary harness
#

-_-
@open mantle ??

sturdy oar
#

mhh I think one day I'll want to rewrite my entire plugin with Kotlin

keen compass
#

Lol

sturdy oar
#

it would be much shorter and better

keen compass
#

eventually at some point programs have to be re-written

weary harness
#

be more clear in your questions @open mantle

keen compass
#

there is no escaping that

#

just can only be delayed

sturdy oar
#

well I'm already rewriting the old one

#

it was kinda trash

#

I now only depend on high quality Libraries

keen compass
#

while others disagree on my view point of planning for the future. I do agree with them, just really depends on the purpose my project is all πŸ˜›

weary harness
#

yo im gonna have dinner, thanks boys

sturdy oar
#

bye

gleaming helm
#

So which kids were insisting that lineaer time lookups were a good idea?

keen compass
#

Not entirely sure o.O

sturdy oar
#

I never said it was a good idea

keen compass
#

Only thing I did earlier was just correct that HashMap is not guaranteed to be O(1) is all. But to make that the case, you really need a very large data set to make that happen lol.

sturdy oar
#

I think if someone has a lot of rows

#

i could implement

#

cleanup features

#

so old data gets purged

gleaming helm
#

While what you said is technically true, that piece of information really is not relevant at this level

hollow thorn
#

how do i get hostile mobs

undone narwhal
#

Use a google cache lol

sturdy oar
#

wut

undone narwhal
#

Wdym ?

sturdy oar
#

"get hostile mobs"

#

that does that even mean

gleaming helm
#

And @sturdy oar You should be cleaning up your map whenever players leave

sturdy oar
#

no the map is a database cache

#

i can't randomly delete stuff from it

keen compass
#

It was relevant earlier because it isn't accurate to say that HashMap is guaranteed to be that.

gleaming helm
#

If you don't clear out entries when players leave you're going to be leaking entries all over the place

sturdy oar
#

I think u don't know the structure of my plugin so its kinda confusing

keen compass
#

going to be leaking player objects which means you will be holding up resources that need to be GC'ed from being GC'ed

gleaming helm
#

Nope. A hashmap is guaranteed to be O(1). A treemap, which is what hashmap converts into after some time, is O(logn)

keen compass
#

@gleaming helm only accurate if the data set isn't super large. Even if it doesn't get converted hashmaps eventually become O(n)

undone narwhal
#

if hash recurrence

sturdy oar
#

On startup, i cache the database into the ConcurrentHashMap,
every 5 min i save the data from JVM to database (to avoid server crash and data loss)
and I save another time when onDisable is called

gleaming helm
#

Well yeah because it runs out of buckets

#

wait so you save the ENTIRE DATABASE into a map?

sturdy oar
#

yes

#

the entire table

gleaming helm
#

I hope you aren't expecting a lot of data in your database

sturdy oar
#

nope

#

I think one has some issues if he has more than 1000 rows

gleaming helm
#

What does your database store?

sturdy oar
#

sure

keen compass
#

if you want some resilience for when the server crashes I recommend using Memory Mapped files as the middle for holding data

sturdy oar
#

and UUIDs

#

it's pretty lightweight object

gleaming helm
#

Yea so you could really end up with a lot of data

open mantle
#

wdym @open mantle
@weary harness
how to make a title it can switch (day;night) it depend of time in serv

sturdy oar
#

flags are only 3 at the moment

gleaming helm
#

No I'm saying

#

You could end up with a lot of records in your flat file database

sturdy oar
#

yeah , technically a huge ass server

#

could have a lot of rows

#

but I'm planning to implement data purging so databases don't get insanely big with time

weary harness
#

boys can anyone help @open mantle. He is trying to make the MOTD change according to local time zone day/night cycle

#

hes not very good at asking questions apperently

gleaming helm
#

Well then you're just deleting player data. That's a band aid, not a fix

weary harness
#

so im typing this out

open mantle
#

))

weary harness
#

??

))
@open mantle lol this guy

keen compass
#

I think it might be possible with using PlaceHolderAPI

sturdy oar
#

I mean i could also work directly from the database, but I think caching it makes things more easy

weary harness
#

thats a good call yea @keen compass

gleaming helm
#

Way less performant

#

At scale *

keen compass
#

You should only get data that you know you need and not get all the data if its not needed

#

its not really a big performance hit to query the DB for extra data

sturdy oar
#

well I don't need any data, until it's requested

#

for example when one player says a "bad" word

#

i increment his flags

keen compass
#

but, googles Gson stuff has a few nice caching stuff you can actually use though

#

which is shaded into the server already

sturdy oar
#

what does GSON have to do?

gleaming helm
#

What

sturdy oar
#

im not using json at the moment

gleaming helm
#

GSON is just json parsing and serializing

keen compass
#

yes I know, but in that library is caching methods

gleaming helm
#

I think you're talking about google's collection apis

keen compass
#

If I recall its part of guava

sturdy oar
#

I think the best way is to try just finishing it the way I have planned

#

and make a benchmark

keen compass
#

but the caching mechanism you could use is an expiring cache method

gleaming helm
#

I think he wants the maps for the online players always loaded in memory

#

That's what I'd do

keen compass
#

it gets cached, but only for a period of time, and then it expires and removed but it can auto get the data for you if the data you want expired already

gleaming helm
#

Load it from the file database when the player joins in asyncprelogin

undone narwhal
#

Is it possible to make a Cache expiration but execute a save when it expire?

gleaming helm
#

And then save it periodically and when they leave

sturdy oar
#

nono its a lot different, i will explain

keen compass
#

@undone narwhal yes

undone narwhal
#

@keen compass awesome

sturdy oar
#

I cache all data, if a player does a thing, my plugin will search into the map for the player UUID, and if it is found it will increment a flag integer, otherwise it will just add him

#

if i didn't cache the data i'd have to execute a sql statement each time i think

gleaming helm
#

Wait your data is already in sql?

#

Why are you caching at all

#

Just execute the sql statements

keen compass
#

sql queries can be done on their own thread

#

and the odds you will have slow queries is very low as well

gleaming helm
#

That's the proper use of a completable future

sturdy oar
#

so I shouldn't cache anything at all

gleaming helm
#

I don't think I would

keen compass
#

It only makes sense to cache if you absolutely need the data now

sturdy oar
#

cool, I guess i will take a lot of time and rewrite everything 😒

#

no many of the data actually may end up not being used

#

so it's waste of space

#

y'all right

keen compass
#

only times where I find it where cache is needed is say like a minigame where a slow query can be deterimental

#

in which case you would just cache the data you know that is needed and in most cases its already known before hand which data that is

sturdy oar
#

Thank you. i will fix this

#

It will take some guud time because I'm not that good with SQL

gleaming helm
#

Just make sure in your queries right

#

Well here's the thing about sql

#

You never need more than 1 query to fetch all the data you need

keen compass
#

HikariCP or BoneCP which is deprecated but still works are good for implementing SQL connection pooling

sturdy oar
#

I have HikariCP and AIkar's IDB

#

so it's really made easy

#

luckily

gleaming helm
#

If you use more than 1 query, combine them by nesting or use a join

keen compass
#

can even go as far as to implementing functions too if you really want to

sturdy oar
#

i mean, i don't think it's necessary

gleaming helm
#

For his schema he doesn't need that though

keen compass
#

I agree

sturdy oar
#

i basically need to either get a row

#

or increment a value

#

that's all

#

it's pretty easy

gleaming helm
#

UPDATE tableSET value = value+1 WHEREname = '?';

sturdy oar
#

yeye don't worry, I will figure out SQL for myself

gleaming helm
#

SELECT value FROM table WHERE name = ?;

sturdy oar
#

don't like spoonfeed

gleaming helm
#

Those are your two queries lol

keen compass
#

your use case for SQL is actually easy though fortunately

#

you don't need anything complex

frigid ember
#

are you making an anticheat?

sturdy oar
#

???

tiny dagger
#

there is also DELETE, DROP, INSERT, CREATE

#

:p

frigid ember
#

PlayerData

keen compass
#

even if you were to execute multiple queries for you it won't be detrimental lol

frigid ember
#

u have Integer and flag

gleaming helm
#

Oh my god

frigid ember
#

or whatever

gleaming helm
#

Dude

#

Levae

sturdy oar
#

Data = anticheat

#

ok...

frigid ember
#

you had flag and integer

sturdy oar
#

i mean, it is a security plugin

gleaming helm
#

He skids anticheats and sees PlayerData all the time in anticheat code

#

So he assumes you're skidding too

sturdy oar
#

I've never bothered making anticheats

frigid ember
#

i mean, it is a security plugin
alright

#

i like your coding style btw

sturdy oar
#

no i

#

it's trash

open mantle
#

I think it might be possible with using PlaceHolderAPI
@keen compass thanks

sturdy oar
#

don't follow it

frigid ember
#

nah

#

i don't

#

i only saw a bit

#

so chill

#

i saw like one screenshot lmao

sturdy oar
#

?

gleaming helm
#

I don't recommend putting a parallelstream inside of a completablefuture

#

That's how you end up using all the threads up in your threadpool

sturdy oar
#

well that's prob going away

keen compass
#

lol

sturdy oar
#

since im changing everything

#

i don't think i'll even need streams anymore

frigid ember
#

what kind of security will you have?

keen compass
#

that best kind

gleaming helm
#

And yeah when you have the option to just use a foreach loop just use the foreach loop

frigid ember
#

What do you do?

sturdy oar
#

A feature to ban everyone named Retrooper

frigid ember
#

bruh

#

maybe I use it

keen compass
#

It sounds like its just a chat filter

frigid ember
#

ok

#

you are very organized for a chat filter

keen compass
#

where it monitors when someone uses a banned word or something

sturdy oar
#

correc

#

that's it

frigid ember
#

making the PlayerData class

#

nice

gleaming helm
sturdy oar
#

I'll delete playerData

gleaming helm
#

My chat filter the best

frigid ember
#

wy

sturdy oar
#

i don't actually even need it anymore

frigid ember
#

ok

#

i thought you might store more data

sturdy oar
#

nice @gleaming helm

#

I implemented word replace as well

frigid ember
#

Retrooper: the wrapper saga episode one - skidded tiny

#

?

gleaming helm
#

I use a fancy recursive algorithm to generate mangled words

frigid ember
#

chirag what

#

LOOOL

gleaming helm
#

Really similar to password cracking tools

keen compass
#

I have no idea what skidded means, is that the new word everyone uses for saying stealing?

sturdy oar
#

Well , i don't know if the best

#

i use RegEx

frigid ember
#

I did not even skid

gleaming helm
#

Nope mine's way way better than regex then

frigid ember
#

Apparently to some people here forking open source projects isn't allowed.

#

Β―_(ツ)_/Β―

gleaming helm
#

Forking open source projects and calling them your own, you're right, in most cases that's not allowed.

sturdy oar
frigid ember
#

I even gave credit

#

looool

sturdy oar
#

u can skid that regex

gleaming helm
#

Nah I have way better than a regex

sturdy oar
#

big sad

keen compass
#

just have to be careful with re-cursive methods though. You can deadlock threads that way if you don't know what you are doing XD

gleaming helm
frigid ember
#

just have to be careful with re-cursive methods though. You can deadlock threads that way if you don't know what you are doing XD
lmao

gleaming helm
#

Yeah you think I'm the type to not know what I'm doign?

sturdy oar
#

but can you specify the replacements in the plugin

#

that's a feature many like

gleaming helm
#

Yes

sturdy oar
#

col

keen compass
#

@gleaming helm lol obviously the comment wasn't for you

gleaming helm
#

I can add them in game and it synchronizes it to all nodes in the sharded cluster

#

Using redis

sturdy oar
#

I just have a cool config.yml

gleaming helm
#

I just have a cool list in both redis and mongodb

keen compass
#

just stating for others if they get the idea to use recursive methods to just be careful in doing so. As you can cause some bad things to happen if you are not aware of the repercussions of it.

gleaming helm
#

^

steady cedar
#

My Swear Filter is Me.

sturdy oar
#

I never used recursion

steady cedar
#

If somebody Swear. Ban.

#

Ez Filter.

gleaming helm
#

Don't do recursion unless you like know what you're doing

sturdy oar
#

I only know the recursion for factorial xd

gleaming helm
#

Make sure this works

#

gg

sturdy oar
#

Kevin

#

you know you can send images u know

steady cedar
#

imgur is easier

gleaming helm
#

No you can't

steady cedar
#

lol

keen compass
#

only if you are registered

gleaming helm
#

Oh I can't lol

steady cedar
#

yeah you have to link your account

gleaming helm
#

I'm not linked

steady cedar
#

imagine not having a blue name

#

blue name Gang

#

😎

gleaming helm
#

Imagine caring about a blue name

keen compass
#

Oh no, now you are going to awaken the purple gang

sturdy oar
#

Well i know my code is far from perfect, but at least i put all my efforts into it and have never skidded

keen compass
#

o.o

steady cedar
#

wait oop-

gleaming helm
#

So you're already 10x better than retrooper

#

gg

frigid ember
#

lmao

steady cedar
#

What's Coding

sturdy oar
#

stackoverflow

gleaming helm
#

I have 226k mangled words in my chat filter dictionary LOL

frigid ember
#

its the 1 and 0

gleaming helm
#

226763 words

sturdy oar
#

this is the funniest one so far

steady cedar
#

@gleaming helm What list did you find lol

#

πŸ€”

gleaming helm
#

There are about 200 words that are blocked

#

And then it mangles them all

steady cedar
#

With random character combinations?

frigid ember
#

@frigid ember what

gleaming helm
#

So lookups on the mangled set are very very fast

steady cedar
#

That look like letters?

#

Nice

gleaming helm
#

Yeah

#

Basically

#

I have a mapping

frigid ember
steady cedar
#

L3375P34K

gleaming helm
#

of letter -> substitution

sturdy oar
#

if you write 'dick'

frigid ember
#

i dont get it

sturdy oar
#

you get 'trick'

frigid ember
#

oh

sturdy oar
#

into the chat

steady cedar
#

if you can read L3375P34K

frigid ember
#

Lol

#

smart

steady cedar
#

ur cool

sturdy oar
#

but if you write dickens, its fine

gleaming helm
#

It blocks "7it7y" for example

frigid ember
#

trickens

sturdy oar
#

no

frigid ember
#

gg good regex

#

lol

sturdy oar
#

Dickens is allowed, it's a common name after all

gleaming helm
#

mine >> regex

keen compass
#

you can also use character comparisons too for checking substitutions

frigid ember
#

yea

gleaming helm
#

Or any substituting algorithm thing

sturdy oar
#

I don't think regex is slow , at least with the length of minecraft messages

keen compass
#

the character one is a bit more difficult though to create from scratch

gleaming helm
#

No but my checks run on hashsets

keen compass
#

Kevin's way is probably easier and just as efficient

frigid ember
#

or be a mega cool kid and make a table with every permutation

gleaming helm
#

I generate the mutilated words

#

No it's definitely not easier

sturdy oar
#

Yeah regex is prob. much easier

keen compass
#

well I guess depends who you ask πŸ˜›

sturdy oar
#

otherwise i wouldn't have used it

keen compass
#

the character method is actually comparing the character itself since characters are just images

gleaming helm
#

I generate all of the possible mutilated words using a fancy algorithm that I can't disclose, then I store them in a hashset and checking contains is O(1) time (with the same caveat we talked about with hashmaps)

sturdy oar
#

oh

wheat summit
#

For some reason I've made a game though for some reason it saves, I've turned off both Bukkit's Auto saving and our hosts autosaving though it still saves, can anyone help?

gleaming helm
#

I could use a bloom filter as a preliminary check but really... that's overkill

keen compass
#

lol

wheat summit
#

It was implemented through a Vanilla world

sturdy oar
#

i do it the dumb way, I remove all whitelisted words from string, then check if it has any match with the blacklist regex

gleaming helm
#

a WHITELIST

frigid ember
#

wut

wheat summit
#

Oh, I roll it back each time the game is done

gleaming helm
#

oh man oh man you're going to really piss off some players

keen compass
#

lol

wheat summit
#

Though for some reason it will save randomly

sturdy oar
#

wdym ?

steady cedar
#

Best Chat Filter is a Human Person.

frigid ember
#

whitelisted words???

sturdy oar
#

nonono

keen compass
#

@wheat summit server saves upon shutdown

frigid ember
#

tf

steady cedar
#

I pay MC-Market Developer $0.50/hr To Check Chat.

gleaming helm
#

If you're whitelisting words that means there are going to be words you've not thought of

sturdy oar
#

whitelisted addresses, and domains Ahahahaha

gleaming helm
#

Oh oh I see

wheat summit
#

Yes though the game world was always unloaded before shutdown @keen compass

sturdy oar
#

like 127.0.0.1

frigid ember
#

whitelist block types too

keen compass
#

turning off saving just means the server won't save periodically while it is running, but it will save all the data once you shutdown @wheat summit

wheat summit
#

So unloading the world while auto save is off still makes it save>

gleaming helm
#

You know you're baller when you disable playerdata saving in spigot.yml

keen compass
#

Yes that is correct @wheat summit

wheat summit
#

That seems pretty stupid...

#

Is there a way to fix it?

keen compass
#

well, it has to unload all the data before the world can unload and the server defaults to saving that data first

gleaming helm
#

Flex incoming

keen compass
#

yes use a custom plugin to stop it

gleaming helm
keen compass
#

nice

gleaming helm
#

Actually there's another collection with a few more fields

#

for each player so

#

Total is probably in the ballpark of 30-35 fields

keen compass
#

I do like the sound of your method, but I probably won't bother with it unless it really becomes necessary lmao

wheat summit
#

This is what I used to reset the arena:

keen compass
#

I mean as in creating it myself

gleaming helm
#

Only do this if you're sharding

wheat summit
#
    public ArenaReseter(Main plugin) {
        this.plugin = plugin;
    }

    public void unloadMap(String mapname){
        Bukkit.getServer().unloadWorld(Bukkit.getServer().getWorld(mapname), false);
    }

    public void loadMap(String mapname){
        World world = Bukkit.getServer().createWorld(new WorldCreator(mapname));
        world.setAutoSave(false);
    }

    public void rollback(String mapname){
        unloadMap(mapname);
        loadMap(mapname);
    }
gleaming helm
#

Don't fucking do this if you don't have a good reason to do it lol

keen compass
#

lol

wheat summit
#

Sometimes it worked and other times it didn't

keen compass
#

I figured that would be the case with it

wheat summit
#

That's what confuses me

gleaming helm
#

It's a lot easier to not serialize inventories and health and hunger and all that

sturdy oar
#

Frostalf you maybe have some advice

keen compass
#

@wheat summit is the world for a minigame?

wheat summit
#

Yes

keen compass
#

then just delete the world after its use

wheat summit
#

I did try that though it never seemed to work

keen compass
#

keep a master of the world and copy the master everytime you need a new world. Delete the world when done

gleaming helm
#

Cloning world folders is a beautiful thing

wheat summit
#

That's what I originally did

gleaming helm
#

@sturdy oar make sure you're tokenizing

wheat summit
#

Though for some reason when I tried copying the new folder or deleting it I would get errors related to stuff like the file having a /level.dat

gleaming helm
#

fu127.0.0.1ck gets blocked

#

And other things that are maybe more benign

sturdy oar
#

i don't know if that would actually pass or not

keen compass
#

@wheat summit probably had to do with in how you were doing the cloning.

gleaming helm
#

SlimeWorldManager was designed for exactly what you're trying to do

wheat summit
#

This is how I would clone and delete it:

#
    public void copyFolders(File sourceFolder, File destinationFolder) throws IOException {
        if(sourceFolder.isDirectory()) {
            if(!destinationFolder.exists()) {
                destinationFolder.mkdir();
            }
            for(String files : Objects.requireNonNull(sourceFolder.list())) {
                File srcFile = new File(sourceFolder, files);
                File destFile = new File(destinationFolder, files);

                copyFolders(srcFile, destFile);
            }
        } else {
            Files.copy(sourceFolder, destinationFolder);
        }
    }

    public void deleteFolder(File fileToDelete) throws IOException {
        FileUtils.deleteDirectory(fileToDelete);
    }
#

Call delete and then copy

#

FileUtils is from org.apache

sturdy oar
#

see you later

keen compass
#

Don't we all

#

XD

wheat summit
#

Lol

keen compass
#

if you want to know my way of how I would do it, is I would just execute a bash script to uncompress the world from an archive. This way only thing you really need to code is just unloading/loading of the world. Bash script handles removing and cloning the world files. Makes no sense to have the JVM handle it when the OS does just fine to do so πŸ˜›

#

FYI, you can execute commands from Java as well as get the output of the command as well.

wheat summit
#

Ok thanks

keen compass
#

The only thing is when executing commands from Java, is that the Java applications has the same permissions as the user that executed the Java Application

sturdy oar
#

also don't you have to stop any writing when you clone a word?

keen compass
#

Reason why you shouldn't run MC servers as root πŸ˜›

#

@sturdy oar yes, but you can let the server handle the loading/unloading for the world though

sturdy oar
#

i remember I had a discussion about cloning worlds while running the servers on Paper discord

keen compass
#

as for the actual cloning you can let the OS handle it

gleaming helm
#

I'd use the right tool for the job and use SlimeWorldManager which was designed to solve the exact problem you're having

keen compass
#

I haven't used such things, but if a plugin exists to handle it you can use that too

gleaming helm
#

You can clone worlds into memory (even from a database if you want)

keen compass
#

I have heard of it, just haven't used it is all so I am not entirely sure what exactly it all does

gleaming helm
#

Yea it's a pretty neat bit of software

keen compass
#

but, me I prefer to let the OS handle stuff if its able to handle it πŸ˜‰

#

not like you are going to beat the OS doing its job in most cases lol

gleaming helm
#

Yeah I think swm beats the OS filesystem

#

It doesn't call copy()

keen compass
#

if coming from the Database I could see that

gleaming helm
#

Even from a filesystem

#

It doesn't call copy

#

In fact it loads the world on boot and then just copies all the data it needs in memory

sturdy oar
#

is he also compressing?^

gleaming helm
#

(When I say load the world I just mean loads the world data from the file system, it doesn't like add it to the world list)

#

Yeah the compression is pretty darn good

frigid ember
#

only bad thing bout swm insanely high ram usage

sturdy oar
#

I always use 7Zip for compressing my worlds

gleaming helm
#

A map in a schematic takes about 3mb for my use case. The same map in the slime format is 30kb

frigid ember
#

so you have to keep worlds unloaded till they're used and loading then is a little lag

gleaming helm
#

Yeah

#

I actually have a bit of a patch in my version to make that async. The patch isn't too difficult but it requires some knowledge about the world loading system

keen compass
#

slime excludes data that isn't necessary though

#

which is why the reduced size

gleaming helm
#

Not the reason for the 99% size reduction from a schematic

keen compass
#

there is quite a bit of data that isn't necessary most of the time to be saved everywhere

frigid ember
#

@gleaming helm could share? I'd like to test

gleaming helm
#

I can't unfortunately

keen compass
#

but the other thing it does is re-organizes the data

gleaming helm
#

NDA

keen compass
#

for more optimal saving

gleaming helm
#

Yeah that's true

#

The real savings comes from the compression

sturdy oar
#

how much does compression take advantage of having more cores?

#

like a ryzen 2600 for example

frigid ember
#

depends on algorithm

keen compass
#

depends on the algo and how its implemented

gleaming helm
#

The data you're compressing is really small anyways with SWM so it's really not a huge concern, and it all happens off the main thread.

sturdy oar
#

7Zip

keen compass
#

you can use an appropriate algo, but not implement it in a way to take advantage of multiple cores lol. But I am going to assume SWM has it implemented properly πŸ˜›

gleaming helm
#

SWM uses a lib that implements properly

#

Nobody implements a compression algo themselves

#

They're complicated beasts that most people here don't have a chance at understanding

keen compass
#

lol that is true

#

it is the same with trying to create your own encryption

#

XD

gleaming helm
#

Yeah unless you've gone to school for cryptography, don't. Please for the love of god don't. write your own crypto alg

keen compass
#

lol

gleaming helm
#

Even in my discrete math class

keen compass
#

I have been to school for crypto and I still have a hard time with it XD

gleaming helm
#

The professor had us implement RSA in completely wrong way

frigid ember
#

Hey guys - I have a resource pack in which we change Lime_Dye to be this big structure. However, Lime_Dye does not change on the server. The Lime_Dye DOES change in our single player world, but again, not in on our server.

#

Yes, I know we have the right link and it is being downloaded properly, that is not the issue. The other textures we manipulated change successfully, just not the lime dye texture.

gleaming helm
#

Even implementing crypto libs

keen compass
#

probably using the wrong name for the server @frigid ember

gleaming helm
#

People still fucking use ECB mode

#

@frigid ember Custom model data?

#

COUGH FUCKING ZOOM

frigid ember
#

@keen compass What do you mean?

#

@gleaming helm Do you mean you want to see the custom model data?

gleaming helm
#

No is there a custom model data flag that you need to set?

#

In the NBT

frigid ember
#

Well, when we changed hoes to spears, that worked just fine

keen compass
#

well Lime_Dye is a material in the server. It isn't a block, but the material can be used as part of block data.

frigid ember
#

I didn't have to set anything in NBT

gleaming helm
#

Send me the lime_dye.json file

#

in your resource pack

frigid ember
#

Understood

gleaming helm
frigid ember
gleaming helm
#

No

#

The other file

frigid ember
#

Which file?

gleaming helm
#

The one at /assets/minecraft/items

frigid ember
#

ok

gleaming helm
#

It's named lime_dye.json

frigid ember
#

Yeah thats the contents of it @gleaming helm

#

What I just posted is the contents of that file

gleaming helm
#

Oh so your resource pack guy literally overrode it

frigid ember
#

Yeah

gleaming helm
#

That's kinda dumb but ok

south shoal
#

I forgot how you make a plugin reload command anny one that can help ?

odd knoll
#

For me it was easier to unload the whole plugin (internally, not actually on Spigot) then load it again (coz there was sooo much that would have to be reloaded individually).

frigid ember
#

@frigid ember could be viaversion related, I had same issue

south shoal
#

I have now running 41 plugins so restarting see will cause in waiting 2 min

odd knoll
#

Oh, reload other plugins.

south shoal
#

Never mind fount ou that it is not possible

#

Anny Idea how to get a date and time in the scoreboard?

zenith siren
#

Does anyone have some tips for creating a world at runtime? I'm trying to copy a world by first copying the world files and then creating the world but it occupies the main thread so the server will stop responding. I tried to create the world async but I got an error because Bukkit API and async don't go together well.

https://gyazo.com/45317ae4a42d81e78647b67f6c57fa37

#

That link is a screenshot of the method

cloud sparrow
#

why are you copying it for?

zenith siren
#

That thread is where I got my method from

keen compass
#

@frigid ember I am not an expert at resource packs, but the only thing I can say is that lime_dye is an item and isn't a block. So as far as structures goes, you will need to use something that is a block. You can re-skin items all you want, just doesn't mean the server will treat it differently because it has a different texture.

south shoal
#

Any one an idea> Anny Idea how to get a date and time in the scoreboard?
@south shoal

sturdy oar
#

did you ping yourself , smh.

south shoal
#

Yes

#

Haha

naive goblet
#

SimpleDateFormat might do the work

tiny dagger
#

LocalDateTime.now() tho

ashen stirrup
#

How do you listen for if a fish is being caught? PlayerFishEvent has event.getCaught() but it returns an Entity rather than an ItemStakc

sturdy oar
#

yes

#

it's an entity

#

because it's an item being dropped

#

i think so

ashen stirrup
#

if (event.getCaught().getType().name().endsWith("FISH") || event.getCaught().getType().name().equalsIgnoreCase("SALMON") || event.getCaught().getType().name().equalsIgnoreCase("COD")){} doesn't seem to work though

sturdy oar
#

you can also catch an entity so it's not always an item

#

i'm not entirely sure because I've never actually used this event

primal nymph
#

i dont get this

#

where do i put plugins, either on the spigot plugin folder or the bungee plugin folder to make the plugin work?

#

can someone tell me pls

wanton delta
#

I'm using a RayTraceResult from World#rayTraceBlocks, but is there a way to make it ignore the block that is at the starting position?

#

using block.getLocation will work, but only when the player is northwest from the block

mild hound
#

Anyone can help me? im was trying to start a server with Hamachi, but a Appeared " FAILED TO BIND PORT " I've tried everything and I couldn't solve it.
If you know how to help me, send me a message in private.

gleaming helm
#

i...

tiny dagger
#

j..

acoustic temple
#

So I'm trying to increase the apple drop rate of leaves
I'm not sure how to check if a leaf has dropped an apple by decaying naturally

tiny dagger
#

you already have something on that port

mild hound
#

you already have something on that port
@tiny dagger idk

#

i try others ports

tiny dagger
#

or you don't own that ip

zenith siren
#

Does anyone have some tips for creating a world at runtime? I'm trying to copy a world by first copying the world files and then creating the world but it occupies the main thread so the server will stop responding. I tried to create the world async but I got an error because Bukkit API and async don't go together well.

mild hound
#

or you don't own that ip
@tiny dagger im using Hamachi for ip

#

i try no-ip to

tiny dagger
#

okay hamachi

#

i don't know how that worked

#

but you had to use like the hamachi ip or something

mild hound
#

yah

frigid ember
#

@mild hound use ngrok

#

with it your users don't need to install hamachi

mild hound
#

ok

#

i gona try

frigid ember
#

I use it daily, really cool thing

mild hound
#

Other person can into the server?

frigid ember
#

yup

#

it generates address to give to your users

#

the address is different every run, unless you pay

uneven dove
#

Hi, im trying spawn a CustomEntity but this only work if i reload the server. Any help?
Version: 1.15.2

MainClass code:

public class MainClass extends JavaPlugin {
    public void onEnable() {
        h.spawn(loc);
        main = this;
        Location loc = new Location(Bukkit.getWorlds().get(0), -45, 66, -11);
        h = new ChesterEntity(((CraftWorld)loc.getWorld()).getHandle());
    }
}```
CustomEntity code

public class CustomEntity extends EntityWolf {

public CustomEntity(World world) {
    super(EntityTypes.WOLF, world);
}

public void spawn(Location loc) {
    this.world.addEntity(this, CreatureSpawnEvent.SpawnReason.CUSTOM);
    this.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
 }

}```

mild hound
#

the address is different every run, unless you pay
@frigid ember ok

frigid ember
#

@uneven dove your plugin likely loads before the world does

#

change load order

uneven dove
#

how ?

frigid ember
#

don't know, google it or something

#

but I know that plugins can be loaded after world load

#

with some plugin.yml change

quartz stag
#

hi i need help

#

Im using Cmi holograms but idk how to do things like Players online and that stuff can someone help me?

odd knoll
#

If it supports PlaceholderAPI, you can use PlaceholderAPI placeholders.

quartz stag
#

yea we have that but im still confused

uneven dove
#

@frigid ember using PlayerJoinEvent to delay spawning I also have to connect 2 times to make it appear.

frigid ember
#

hmm

#

why is your h.spawn above loc generation?

#

it seems to be wrong order of code

#

you new to programming?

uneven dove
#

bad copy

#
   h = new ChesterEntity(((CraftWorld)loc.getWorld()).getHandle());
   Bukkit.getPluginManager().registerEvents(new Listener() {
      @EventHandler
      private void join(PlayerJoinEvent e) {
         h.spawn(loc);
      }
  }, this);
frigid ember
#

I have my debug messages ```java

for (int i = 1; i <= craftingSlots.length; i++) {
    view.setItem(i, inv.getItem(craftingSlots[i - 1]));
}

ItemStack stack = view.getItem(0);

if (stack == null) {
    msg(p, "&cItem result is null");
}
int i = 0;

for (ItemStack item : view.getContents()) {
    if (item == null || item.getType() == Material.AIR)
    continue;
    i++;
}

msg(p, "&aFound: " + String.valueOf(i) + " &items in the crafting inventory.");

if (view.getItem(0) != null && view.getItem(0).getType() != Material.AIR) {
    msg(p, "&aAnd the resulting item is type " + view.getItem(0).getType().toString());
} else {
    msg(p, "&cAnd the resulting item is null");
}

inv.setItem(23, stack);

Where view is a crafting inventory
open girder
#

please someone help me here
i'm using multiple NMS versions via interfacing with several modules
and i'm using maven
my plugin is letting me import com.willfp.ecoenchants.API
but then it won't let me compile: Error:(3,34) java: package com.willfp.ecoenchants.API does not exist
when clearly it does exist

#

i'm just totally lost

#

looking through compile logs it says [WARNING] The POM for com.willfp.ecoenchants:API:jar:1.2.0 is missing, no dependency information available

#

but the pom does exist

primal nymph
#

i created a bungee server, do i have to port foward my other servers when you change the server port?

south shoal
#

any one a idea how to set a time in a scoreboard

lean stratus
#

is there a way i can enchant a sword with sharpness 1000 with a command. when ever i put it in it says "error: unknown item name"

south shoal
#

look for a plugin that has that that is not a future of a normal spigot server

frigid ember
#

????

gleaming helm
#

As a person who has figured out how to properly do custom crafting (including multiple items in the recipe, and custom items in the recipe) using nothing but the vanilla crafting UI... I can confirm that you do not need a custom crafting UI for custom crafting. Way worse experience, possible dupes.

frigid ember
#

^

#

I'm not trying to make custom crafting recipes, just to have a workbench in a gui

#

again

#

there may be glitches and or dupes you didn't account for

#

yes

#

that is hypixel

#

they have a big team of devs

#

yep

#

But why is the result always null?

#

It works when I do p.openWorkbench instead, but then the item in slot 0 is set to the result

#

let me look up

#

what code are you referencing exactly

#

do they really have a big team of devs?

#

😠 im still angry they left crypt on his own

#

Is it better to use (System.nanoTime() / 1000000) or System.currentTimeMillis()

keen compass
#

currentTimeMillis but it depends on much accuracy you need since it uses OS time, which can be off by a few millis

#

nanoTime() is more accurate but is a more costly call as well

frigid ember
#

apparently currentTimeMillis doesnt work on some OSes

keen compass
#

which OS's would that not work on o.O

frigid ember
#

dont ask me anything but everything but windows apparently

#

and if its off, well then the next time you call it, it would still be off by same amount right?

keen compass
#

the only thing I know of is that Windows implements millis differently then linux and therefore isn't as accurate on windows

#

but it still works

#

Depends how fast you are making the call

frigid ember
#

every packet, as a timestamp

keen compass
#

Well, still kind of broad. Do you really need the timestamp to be super accurate? not sure what you are using it for

lean stratus
#

is there a way i can enchant a sword with sharpness 1000 with a command. when ever i put it in it says "error: unknown item name"

keen compass
#

need a custom plugin to allow unsafe enchants

open girder
#

literally just use essentials

keen compass
#

If you are using TCP @frigid ember then you can just use the protocols timestamp function to put timestamps on outgoing packets

frigid ember
#

Doesn't minecraft packets use millis?

#

as timestamps?

keen compass
#

normally that is the standard for timestamps in packets, and since java edition minecraft uses TCP more then likely it uses the Timestamp method from the protocol so the answer would be yes.

frigid ember
#

well they broke the plugin anyway, i dont see any other anticheat have problems using millis so Β―_(ツ)_/Β―

keen compass
#

shouldn't have a problem using millis

#

o.O

sturdy oar
#

doesn't System.getCurrentMillis() and System.nanoTime() call native stuff

keen compass
#

yes

#

but one is more relaxed then the other though

#

currentTimeMillis doesn't care about accuracy as much as well as there is a possibility of getting the same time depending how fast you are using that method

#

where as nanoTime is more accurate but its a more costly call because of that

hoary parcel
#

Isn't nanosecond a system call on some jvms?

gleaming helm
#

@frigid ember You can do all of that with the vanilla crafting GUI

#

I have literally done all of that myself with the vanilla crafting GUI on my current project

#

Also I don't recommend copying hypixel, you'll get laughed at for... copying hypixel.

tired condor
#

How could I make the sound follow the player? Because if the player moves the sound he's only on one side of the phone...

pl.playSound(p.getLocation(), "minecraft:music_disc.13", Float.MAX_VALUE, 1f);

sturdy oar
#

increase volume

tired condor
#

How much?

sturdy oar
#

it then acts as increasing radius i think

#

i don't know

undone narwhal
#

Isn't there a Player#playMusic method?

sturdy oar
#

nope

undone narwhal
#

Damn

frigid ember
#

hello, i got a question, i want to create a "generic" thing, like, i need to create a KillerMoney, when mob is killed, the player got money.

Or, i don't want to make a condition for ALL mobs, someone got an idea ?
Thanks! (ping me)

#

why are many java developers saying what lwjgl says about currentTimeMillis and nanoTime is false when i tell them i learned it from their wiki?
Are they wrong?

#

@gleaming helm I don't think I'm being clear, I want the crafting table in the gui, I'm not adding custom recipes

undone narwhal
#

@tired condor I checked the jd, seems that there is no method to play a durable sound based on the player location...

gleaming helm
#

That's so dumb

#

Why not just literally

#

use the normal crafting table

tired condor
#

lol

frigid ember
#

I want it in the gui because I'm making a fakepixel server

balmy sorrel
#

I am Spanish, it is in case you do not understand something of what is in the photo

tired condor
#

The only viable idea I thought of was to create several positions to put the sound and it would be like "speakers"

tiny dagger
#

wrong way of doing it imo

pure pasture
#

Hey guys can someone explain how the f java calculates 132/6.6 to be 22?

keen compass
#

yeah I think it is @hoary parcel

undone narwhal
#

@tired condor play your sound with Float.MAX_VALUE volume

tired condor
#

i playing

undone narwhal
#

Oh yeah sorry

#

Then I've no answer

#

Jukebox are located, that's why I think

chrome lark
#

The accuracy of those depends on the OS as a whole

#

Some OSes also optimize the heck out of calls like getting the monotonic time

sturdy oar
#

Linux >>>>>>>>

chrome lark
#

I know that tux was testing on freebsd, and the cost of a nanoTime call was literally fricking crazy

sturdy oar
#

i used freeBSD

balmy sorrel
undone narwhal
#

@balmy sorrel you put a } line 40

chrome lark
#

I wanna say that in part it was more down to the fact that he was running it in a VM

#

But, god knows

sturdy oar
#

cat

#

i could test it legitimately

#

i have GhostBSD as my desktop

#

without virtualization

chrome lark
#

LWJGL basically has its own thing which pulls the nanotime in a more efficent manner than having to ask the OS

keen compass
#

I can see it being costly in the VM if time isn't passed through from the host to the VM

#

as well as it being not so accurate as well

#

XD

sturdy oar
#

Frostalf

#

I've been rewriting as you guys told me, πŸ‘

#

it's better now

keen compass
#

Nice

undone narwhal
#

@balmy sorrel Btw your String texto isn't actually getting the string from the config

sturdy oar
#

do you think i should return a Void CompletableFuture when a query has been finished?

#

or just not return anything at all

keen compass
#

depends if you need the result

chrome lark
#

depends

#

^^

sturdy oar
#

it could be cool to get how much did it take

#

and do some benchmarks i think

chrome lark
#

if you feel that you may have a reason to wanna pull a response from it, it's worth just giving it a response type

balmy sorrel
#

I told my friend since it gave me an error if I put it like this

sturdy oar
#

yey spanish variables

balmy sorrel
#

?

sturdy oar
#

idk is that spanish or mexican

keen compass
#

I don't really see the issue other then path might be the issue. What are you trying to do or what is the problem @balmy sorrel ?

undone narwhal
#

config.getString("Config.mensaje-bienvenida-texto")

#

Instead of just the "Config...."

keen compass
#

more optimal that way as it removes an unnecessary String object. But i am not entirely sure though what is being asked lol

sturdy oar
#

πŸ€·β€β™‚οΈ me neither

undone narwhal
#

Guys he's beginning let's try not to lose him ^^

keen compass
#

I am fine with that, Fendi is learning too πŸ˜› but without a proper question or clarification I can't really help

rustic socket
#

He's passing the path, not the value

wind dock
#

uhm not really related to spigot but when you get the head of another player, does it auto update or no

#

like if i change my skin does the head update on the map?

sturdy oar
#

i think the answer equals to no

wind dock
#

dangit

tawny gale
#

Someone know a daily rewards plugin for 1.8 please ? (I tested Reward Pro but there are some lags)

rustic socket
#

Try getConfig().getString("Config.espanol-here") in the translateAlternateColorCodes call, @balmy sorrel

keen compass
#

It won't update until the cache expires and re-updates or a plugin forces it to update @wind dock

wind dock
#

oh

#

what do u mean

#

by cache expires

sturdy oar
#

Is it actually possible to put a transparent intelliJ background tho

keen compass
#

Skins are cached, but they are not cached forever

#

so they expire at some point

wind dock
#

uhhhh I dont get it

sturdy oar
#

The client caches them

#

i think

rustic socket
#

Until it decides to forget them, Geometry

sturdy oar
#

Isn't it like 1 month

keen compass
#

shorter time then that

sturdy oar
#

nvm that's offlinePlayer

balmy sorrel
#

Thank you all very much, they have solved it for me, thank you seriously❀️

keen compass
#

Well glad it was resolved even though I wasn't much help for that

sturdy oar
#

@balmy sorrel do you want a very pro tip

keen compass
#

Either Fendi will be complimented on this tip of theirs or everyone is going to smite Fendi for the tip XD

sturdy oar
#

upgrade to IntelliJ whenever you have time

undone narwhal
#

My bad @balmy sorrel , stay like first

#

I'm so tired damn

keen compass
#

Should use Netbeans

#

πŸ˜‰

sturdy oar
#

no...

#

BlueJ of course

undone narwhal
#

😭

frigid ember
#

It doesn't really matter what IDE you use

sturdy oar
#

Well... it just makes your life easier

keen compass
#

I know lol, just like to always throw out there for the other ide's whenever one is recommended πŸ˜›

balmy sorrel
rustic socket
#

until theyve got the basics and intermediates well versed, there is no need for intellij

#

after that you can use plugin in your class, slayer

sturdy oar
keen compass
#

maybe they are referring to the import with the yellow triangle? In which case I think it is indicating the import is no longer being used o.O

rustic socket
#

to make a new instance of the class, you have to give it one of your main class. if you do that inside your main class, do new Entrar(this)

#

Also what Frostalf said; you can hover over and use the recommended fix (applies to most yellow lines, here it is delete the line)

sturdy oar
#

why does eclipse separate java imports from bukkit ones tho

#

it looks weird

keen compass
#

eclipse isn't the only one that does it. It separates the imports that come from different places

frigid ember
#

Its easier to see where the imports are

rustic socket
#

intellij does the same but without an empty line :)

sturdy oar
#

^ yeah

undone narwhal
#

Yep

keen compass
#

so, all the bukkit ones will be grouped together, the java ones will be grouped together, if there was another lib those will have their own group

frigid ember
#

I think you can change most of that stuff anyways in eclipse preferences

rustic socket
#

you can enable empty line in IJ tho i believe

sturdy oar
frigid ember
#

Which is why it doesn't really matter which ide you use

keen compass
#

What are they telling you @frigid ember ? not sure who these other Java Developers are lol

frigid ember
#

lol

#

ok have a good one

#

late rn for me

keen compass
#

I am pretty sure though I and few others have responded though in relation to your comment

gleaming helm
#

@frigid ember What it's saying about currentTimeMillis is true

#

It clearly states that some implementations differ

keen compass
#

Yep, that was covered earlier lol

#

it really indirectly refers to windows though, since windows is the one that implements currentTimeMillis differently XD

frigid ember
#

what would you recommend me to use in an async task for example

keen compass
#

depends on how much accuracy you really need

frigid ember
#

i guess having a lot won’t hurt as much

#

can someone explain what they mean by 1-50ms off

#

literally 1-50mS???

#

that much

keen compass
#

nanoTime is already thread safe, currentTimeMillis() can get you the time in the past depending on what exactly you are doing since not all threads run at the same time or same order

frigid ember
#

like thats terrible ofc i want accuracy

keen compass
#

Because Windows doesn't update currentTimeMillis every millisecond

frigid ember
#

depending on os ofc

#

yea

#

linux is about 1ms off

#

but if you are supporting multiple platforms(im not only talking games also spigot servers hosted on diff platforms)

#

some os’ being 50ms off

#

is terrible

undone narwhal
#

Most of the case you're not 1ms accurated if you're talking about spigot plugins

frigid ember
#

imagine having an anticheat for example and it being 50ms off

keen compass
#

depends if you care about being 50ms off or not

undone narwhal
#

1 tick = 50ms

frigid ember
#

ik

undone narwhal
#

In the better case

frigid ember
#

a tick off can false some chekcs

#

checks

#

of my checks

keen compass
#

you can always use a delta

undone narwhal
#

And it's 1-50ms, it's less than, or a tick

#

So you can't skip it, only if you decrease your TPS and base your check sync

keen compass
#

assuming you are using the tick loop or not

#

create your own new thread, and the code in that new thread can run faster then the tick loop of the server

undone narwhal
#

Yes right

#

But even without this problem tps loss will make it slower nah?

keen compass
#

no

#

but again depends if you are using the tick loop or not. If you use the tick loop then yes it will run slower if there is TPS loss

#

otherwise if the thread isn't bound to the server loop then no

undone narwhal
#

Yep that's what I was thinking

gleaming helm
#

m8 you don't write checks you copy them from janitor, and janitor checks false themselves lmfao

#

Any good anticheat will have almost no dependency on System.currentTimeMillis() whatsoever

sturdy oar
#

One of the best source anticheats i've seen

#

was NoCheatPlus

gleaming helm
#

tell me that's a joke

#

Please tell me that's a joke

frigid ember
#

@gleaming helm can u just stfu and stop dude, you are annoying and just do something w your life, you’re so annoying dude

#

like stfu

#

every single day just sayin random sht

tiny dagger
#

nocheatplus back in my day was amazing

frigid ember
#

mmm

tiny dagger
#

it barely used any resources

frigid ember
gleaming helm
#

NCP is garbage

frigid ember
#

lets go ton #general

tiny dagger
#

even tho it didn't had aimbot and whatever

#

it did it's stuff pretty good

frigid ember
#

its not a bad ac to learn from as a beginner, to learn the basics

frigid ember
#

Hey guys, if I get a name change can I opt in to remove previously known as?

acoustic temple
#

I'm using a listener to make players drop their heads on death, but i think it's triggering twice and dropping two heads

sturdy oar
#

Then the player is dying twice πŸ€·β€β™‚οΈ

#

Idk m8

acoustic temple
#

thanks for contributing

odd knoll
#

Try debugging, make sure it's actually being fired first.

pastel igloo
#

is there an oficial spigot for 1.8.8

#

or only a snapshot?

odd knoll
#

There is a Spigot for 1.8.8, but it's unsupported (no patches). I personally just use Paper though https://papermc.io/

#

softdepend is supposed to make your plugin load after the ones in the list right? Because it's not for me.

pastel igloo
#

do i need to do that in my plugins folder or in my filemanager?