#help-archived

1 messages · Page 119 of 1

undone narwhal
#

@south shoal You don't need it, just replace Main.getMain by: this

sturdy oar
#

yeah that but

#

don't call your damn class

#

Main

frigid ember
#

why

#

Its not that bad of a name

sturdy oar
#
  1. Because there are already other classes named Main
south shoal
frigid ember
#

only one in bukkit

sturdy oar
pastel igloo
#

Is voltaneSpigot better than Paper and taco and normal spigot?

frigid ember
#

i said in bukkit are u blind

#

craftbukkit

sturdy oar
#

sorry i tend not to read nonsense stuff

frigid ember
#

?

south shoal
#

well now I am confused

sturdy oar
#

why

frigid ember
#
private static Main instance;

public static Main getInstance() {
     return instance == null ? (instance = new Main()) : instance;
}```
south shoal
#

to reload it every seccond

undone narwhal
#

@pastel igloo Every forks differ, there are pros and cons. Depending on what you need exactly

frigid ember
#

this works too

sturdy oar
#

seems like a xy problem to me

south shoal
#

so More ingormation

I have made a scoreboard that show time and date I want that is reload / updates every sec

undone narwhal
#

with a () retrooper

frigid ember
#

where

undone narwhal
#

and initialization

frigid ember
#

where

silk bane
#

nOt ThReAd SaFe

frigid ember
#

i wrote free handed

#

where ()

undone narwhal
#

(instance = new Main())

sturdy oar
#

you can't assign without ()

frigid ember
#

ok

undone narwhal
#

I made the same dumb mistake ^^

#

for the same stuff ^^

sturdy oar
#

I honestly put !=

frigid ember
#

k

south shoal
#

is this for me?

sturdy oar
#

no

#

idk

south shoal
#

o ok

sturdy oar
#

maybe

south shoal
#

hhahaha

frigid ember
#
private static Main instance;

public static Main getMain() {
     return instance == null ? (instance = new Main()) : instance;
}```
silk bane
#

@south shoal you haven't imported anything

frigid ember
#

why hahaha?

undone narwhal
#

@south shoal It's not an error, it's a warning cause you're launching a task useless (TIP: hover the message to see the errors etc)

south shoal
#

I have used ctr + shift + o more than once (using eclipse)

sturdy oar
#

Also I quickly looked at your code

silk bane
#

it's a bit of an error because none of the symbols are defined because he has one import

sturdy oar
#

you're missing override annotations

pastel igloo
#

@undone narwhal forr PVP and around 50 plugins and 200 players

#

whats the best?

undone narwhal
#

@silk bane This is imported nah?

sturdy oar
#

@undone narwhal forr PVP and around 50 plugins and 200 players
@pastel igloo ?

silk bane
#

what is?

south shoal
#

So what do I need to do?

silk bane
#

oh maybe class names are just highlighted red

undone narwhal
#

@pastel igloo You can then use a fork that remove entities mechanics or reduce it. Paper is really enough but I don't really know the others, have to take a look

silk bane
#

interesting design choice

undone narwhal
#

Yep konsolas, if the class weren't imported, the methods would be red

sturdy oar
#

Paper can probably handle 200 players with proper optimization.
Note that this doesn't mean to just throw in aikar's flags and set every value in the configs to low expecting to automatically get 20.00tps 24/7

undone narwhal
#

or underline

silk bane
#

the whole thing would probably be red

undone narwhal
#

Paper and configure it to remove entity mechanics and other uneeded stuff (hoopers, etc)

sturdy oar
#

I mean if he told it's a pvp server there will actually not be a lot of entities

#

which helps the server a lot

undone narwhal
#

For sure

#

But in my case I prefer disabling entities in that kind of server, then the server will (I hope) totally not calculating for entity spawning or other stuff

shut ember
#

is it better ro ask development questions here or on a forum thread?

silk bane
#

yes

sturdy oar
#

idk here it is faster

#

and there's a lot of people that aren't active on forums

undone narwhal
#

Just ask we'll tell you

shut ember
#

blushes for inclusive or

#

yeah I want to call Server.Spigot.restart() but get a compiler error "Error:(54, 26) java: non-static method restart() cannot be referenced from a static context" Although Server.Spigot is static and my context is non-static... which is extremely confusing

silk bane
#

Bukkit.getServer().spigot().restart()

#

spigot() gets you an instance of Server.Spigot

undone narwhal
#

restart method is part of a Spigot instance, so you can't call it statically

shut ember
#

ah, thank you so much

#

I was utterly confused, because it didn't even seemed to be right calling the class directly

#

also I would like to use the same CommandExecutor for two different commands

#

but it does not work as I intended

#
    public void onEnable() {
        Commands cmds = new Commands();

        this.getCommand("one").setExecutor(cmds);
        this.getCommand("two").setExecutor(cmds);
    }
sturdy oar
#

you can't ?

#

you'll need to register aliases in the plugin.yml

#

or make two separate classes

shut ember
#

oh okay, thats news to me, thank you!

sturdy oar
#

pro tip

#

i don't want to advertise this every 5 seconds but...

#

ACF library is real good for managing commands

shut ember
#

found the corresponding wiki page

#

I don't think I'd have any use for ACF atm, but I made a note to use it later on, if the project grows

sturdy oar
#

well i was kinda forced to use it

#

the onCommand method simply was getting too complex without it

south shoal
#

so how can I update a scoreboard every sec

sturdy oar
#

you use a BukkitScheduler that runs every 20 ticks

south shoal
#

and how would that look?

sturdy oar
#
plugin.getServer().getScheduler().runTaskTimer(plugin, () -> {
//your task here
}, 1L, 20L)
south shoal
#

so a //Your task here needs to ve a void

sturdy oar
#

it's a lambda for the runnable

#

you don't need to return anything

south shoal
#

so put that in the void onEnable

sturdy oar
#

i have no idea what are you trying to achieve 🤷‍♂️

#

that is just how to do a repeated task

south shoal
#

hahah me iether

sturdy oar
#

🤦

south shoal
#

haha wait

#

I will send a screen of my code

keen compass
#

@shut ember you can use subcommands if you only want 1 command class

shut ember
#

how though? @keen compass

keen compass
#

give me a sec to show you an example

sturdy oar
#

yeah i hope you're not going to have a different command for each subcommand

#

you basically have to work with the args passed by onCommand

keen compass
#

all them commands are registered using only 1 base command

sturdy oar
keen compass
#

don't have to exactly do it that way, it is just an example in how it can be done

shut ember
#

Subcommand like
/command subcommand
/command subcommand2

balmy sorrel
#

Hey, do you know any idea how to add a list of bans in a plugin?

sturdy oar
#

what does that mean

shut ember
#

because I mean like
/command1 arg1 arg2
/command2 arg1 arg2

sturdy oar
#

you can do subcommands by checking the array of strings passed by onCommand

shut ember
#

that's what I am doing

sturdy oar
#

gg

keen compass
#

well the classes I linked to do exactly that

shut ember
#

I have two commands with the same syntax but different outcomes. They are bonded because they trigger a scheduler of which only one can exist at a time, so I assume I have to work with the aliases. Or how else would I be able to find out if the scheduler is already running?

keen compass
#

only thing is, they are separated into their own class to make it easier to tell which is which

#

instead of them all being in the same class

south shoal
#

oke explanation about my code
RED > Scoreboard on the right of your screen
GREEN > Luckperms prefix gethering
BLUE > eco gethering
ORANGE > Date and time gethering

sturdy oar
#

you can save the IDs of the schedulers that get dispatched

#

if that's what you need

keen compass
#

@shut ember assign the scheduler to an int to get its id

#

this way you can always check to see if the scheduler is running

south shoal
#

and how can I make it that the time eco and rank get a update very sec

sturdy oar
#

idk m8 i'll have to go right now

#

i need to do some SQL and my head hurts

south shoal
#

hhaha ok

keen compass
#

put the date and time in its own thread and then access it when you need it @south shoal

shut ember
#

i can assign the scheduler to a var when using the same class for issuing both commands (what I am currently doing)
but how can I callthe id from another object (?)

#

@sturdy oar I can help you with SQL if you like

keen compass
#

make the ID available to the class via a method

sturdy oar
#

i'd like that

south shoal
#

The time and date need to shown all the time

sturdy oar
#

but it's kinda not easy stuff

shut ember
#

no prob, I like puzzles

sturdy oar
#

if you want to help i can write a full explaination on what I'm working on

keen compass
#

@south shoal that is fine, you can still have its own thread to be updated. Use a method in your scoreboard area to get it.

shut ember
#

that could help

sturdy oar
#

ok it'll take few mins let me write it well

keen compass
#

and then you could just use a runnable to get it every so often

south shoal
#

and how would that runabel look like?

keen compass
#

just like any other? o.O

south shoal
#

hahah

keen compass
#

I don't do much with scoreboards so I can't really tell you what methods to make use of really

#

I am not a particular fan of scoreboards

south shoal
#

hahah

#

just to realod that time rank and eco I need to use that runnable

sturdy oar
#

I have this table which has the current rows:
player_uuid of type CHAR(36), player_name of type CHAR(16), and three rows of type integer called (flags_ipv4, flags_domains, flags_words). The uuid of the player is of course the primary key of my table and is unique. However the usernames and the flags are only not null. What my plugin does is listen for whenever one of does flags gets triggered from in game, and as soon as the flag gets triggered an sql query on the database should increase the correspondent flag on the database. This sounds pretty simple however there's this issue: if the player is online and already present in the DB, i just need to increase that specific flag by +1 , but if the player has never joined i need to add him with that flag set to 1 and initialize all of the other flags to 0 (I have access to username and UUID so that's not the issue).

#

I've currently only figured out how to do the part where the player is online and already present in the db

#

This isn't spigot related support at all , so i don't expect to get help.

keen compass
#

so your issue is if they are not in the DB?

sturdy oar
#

yeah, because i don't know how I would set every OTHER value than the flag to increase to 0

shut ember
#

first I would query

SELECT flags_ipv4, flags_domains,flags_words FROM tablex WHERE player_uuid='uuid'

If youz get an empty set you can initialize it

#

and everything else you can update pretty easily

#

I am not 100% sure but I think the empty set will be null

sturdy oar
#

my latest attempt was setting the integers as nullable, and using a null check to set them to 0 when null (indicating the player has never recieved those flags before), but I don't think that was a good idea

gleaming helm
#

Make sure you use a prepared statement ^^^^

keen compass
#

to also aide you, can use the api methods to check if the player has played before as well on the server

balmy sorrel
#

Does anyone know how to make a kind of list of bans ?, and with a command that list comes out?

gleaming helm
#

That doesn't necessarily correlate to if the user is in the database

#

@keen compass

sturdy oar
#

yeah Kevin_ im using IDB repository from Aikar so i don't have to make prepared statements, the lib does everything for me

gleaming helm
#

huh...

#

interesting

sturdy oar
#

to also aide you, can use the api methods to check if the player has played before as well on the server
@keen compass lol i didn't think of that

#

that might actually make things much easier

#

i'll have two different statements

keen compass
#

@gleaming helm maybe not, but it makes it easier to know if an insert if exists statement should be ran though

gleaming helm
#

No it really doesn't

sturdy oar
#

wait exactly

#

player can have played, but not flagged

#

)=

gleaming helm
#

You still have to check

#

And you can reset your player data

#

And not the database

#

and cause massive problems

keen compass
#

@sturdy oar should just add everyone that joins with 0 values

sturdy oar
#

yeah

gleaming helm
#

That's the dumbest thing I've ever heard when you can just check if it exists

#

Or even do an upsert

shut ember
gleaming helm
#

Just do an upsert lmfao

balmy sorrel
#

Does anyone know how to make a kind of list of bans ?, and with a command that list comes out?

gleaming helm
#

Is your goal to either update or insert if it doesn't exist?

#

Use an if statement in mysql

#

SQL is a turing complete language

sturdy oar
#

well it's SQLite im using , although it's pretty much the same

gleaming helm
#

Still query language is SQL

#

Which is a turing complete language

#

That (as turing complete languages do) supports branching

keen compass
#

With some small exceptions to certain SQL things though

shut ember
#

@balmy sorrel what exaclty do you mean with a list of bans? Your own list? another plugins list?

keen compass
#

sqlite has some things not quite the same with MySQL

sturdy oar
#

sqlite even breaks between spigot versions to be fair

gleaming helm
#

The query structure is the same @keen compass

balmy sorrel
#

My own list @shut ember

keen compass
#

to an extent it is, depends on your query is done. For instance sqlite has a couple different data types that are different

sturdy oar
#

well for example, postgreSQL has UUID type

#

which is really cool

keen compass
#

so in regards to say creating a table, the query is not the same

shut ember
#

@balmy sorrel I think you need a multidimensional array//list and a storage layer. ?

wind dock
#

I did a clean install of windows

sturdy oar
#

java 32bit

gleaming helm
#

But it's still SQL. The query language is still the same, and the base query features are still the same. And turing completeness, which is my entire point, is definitely a base query language feature.

sturdy oar
#

🤦

wind dock
#

and transfered this

#

Oh wait

sturdy oar
#

you hava java32 bit

wind dock
#

Damnit

sturdy oar
#

i bet my ass on it

keen compass
#

Anyways, depends on how your servers are setup. I usually keep track of all players that have played regardless of the server and regardless if its a new server in the network

wind dock
#

I forgot

#

Wait i have 2 java

#

I have se dev kit 13

#

and java 8

#

which 1 do i change

balmy sorrel
#

@shut ember I just need a command, for example / banlist to say in the chat the list of bans and the reason

sturdy oar
#

why the hell jdk 13 lol

keen compass
#

This way, I don't have to run unnecessary queries, I always know if a player should be in the DB or not. Of course there is exception checking which is where depending on what happened the DB gets fixed 😉

gleaming helm
#

@keen compass The correct way to do that is with an upsert

#

You run a single query

sturdy oar
#

i'll check upsert on some tutorial online

gleaming helm
#

And inside code different logic for if it exists or doesn't exist

#

No error checking necessary

keen compass
#

Except, depending on how many records there are, isn't always optimal to do

wind dock
#

whats the website to download java 8 from

sturdy oar
#

the thing with adding whoever joins into the database, creates the issue that the database gets massively big without a proper reason

#

and i want to avoid it

gleaming helm
#

You should be using indexes

#

If you're not using indexes and PKs properly

#

Please stop fucking using sql

keen compass
#

the fastest method I know of aside from just having functions already on the DB server, is using Insert Except if you have large amount of records

gleaming helm
#

No

#

You misunderstand me

#

You do realize

#

You can write an if statement

#

inside of a query

#

Correct?

shut ember
#

@balmy sorrel so you need a plugin or are you developing one? Sounds like the first

keen compass
#

Yes I know

gleaming helm
#

Good

#

So it's settled

#

The fastest method with the lowest query velocity

#

Is to write a single query to the DB

#

That performs a different action depending on

#

If the user is already in the DB or not

#

And if you're using indexes properly

#

The size of the DB doesn't matter

keen compass
#

Or just already know which should be ran before hand 😛

gleaming helm
#

And if you're not using indexes, your query length will be the same either way

#

How you going to know without checking the database

shut ember
#

which is impossible if you don't know your data beforehand ^^

wind dock
#

That i use for java 8

limber summit
keen compass
#

because the servers know if a player has played before on the network the moment they join. Therefore an insert isn't required unless for some weird reason they were not added before

gleaming helm
#

Ever heard of the data duplication problem?

#

No?

#

Then stop using databases.

balmy sorrel
#

It is my first plugin, and I want to implement the list of bans in my plugin, and I am saying how to do it @shut ember

gleaming helm
#

And do some reading first

keen compass
#

which generally shouldn't happen but because it is a rare case I just catch the exception

#

and fix it from there

gleaming helm
#

That is such a terrible idea

keen compass
#

to you sure

#

but it works none the less with very minimal impact on performance

gleaming helm
#

To any reasonable person who knows how to properly write SQL queries

#

Also

#

Just so you know

#

I run a relational SQL database at work with more than 1 billion rows

#

The average query time

keen compass
#

that is fine

gleaming helm
#

For an INSANELY complex query

#

Is in the ballpark of 50-100 ms

keen compass
#

your solution isn't the only one

gleaming helm
#

SQL can handle very VERY large row counts

keen compass
#

never said it couldn't

gleaming helm
#

Assuming you're indexing properly

sturdy oar
#

I'll try to post my sql whenever i've finished writing it so you can tell me if i've done it right

gleaming helm
#

A check to see if a row exists

#

Is something sql does ANYWAYS when you're inserting with a unique constrained key

#

Which you should be doing if you're using a UUID as a PK

#

(Well... which you are doing, because the PK is uniquely constrained)

keen compass
#

But, I don't do inserts all that often unless someone is new to the network is the thing

#

all the queries are fetches

gleaming helm
#

Yeah easy, so you just fetch the row and if you get no row you assume some defaults

#

Don't even need to write your defaults to the DB

keen compass
#

I don't even do that

#

I don't bother fetching a row if they never played on the network

shut ember
#

@balmy sorrel sender.sendMessage("message");

gleaming helm
#

How do you know they've never played

pastel igloo
#

oh okey

gleaming helm
#

Oh right

#

By using some potentially ephemeral player data file

#

That sounds REAL robust

keen compass
#

Because it is kept track by the network

#

not the individual servers

gleaming helm
#

You're spewing shit right about now

#

You're making zero sense

keen compass
#

My setup keeps track if a someone new connects to the network. I don't use the player data file on the servers

#

why access player data files when it I can have it centralized?

#

So before a player even gets to a server, the data for if the player has been on the network before is already available to said servers

gleaming helm
#

So you already are making a database call

#

wait so

keen compass
#

no

gleaming helm
#

Wasn't the whole point to not make database calls?

keen compass
#

I don't make a database call for it

gleaming helm
#

So it appears by magic

#

Gotcha

keen compass
#

I guess the servers player data way is magic too for you

#

guess there is no other ways

#

because you can't fathom other methods XD

gleaming helm
#

If you don't handle a playerdata file. And you don't make a database call. How the hell do you reliably replicate the data to all nodes in the cluster? I mean... can't possibly be reliable at all

shut ember
sturdy oar
#

no

#

don't use oracle

gleaming helm
#

^

#

Don't use that

#

You don't need an account

#

Also stop fucking using java 8

#

Please upgrade

shut ember
#

😂

#

If one COULD use something better than java 8

gleaming helm
#

😐 my network runs java 11 so idk what you're on about

frigid ember
#

Guys it doesn't really matter what version other people are using

shut ember
#

every second plugin needs java 8 which is fucking anoying...

sturdy oar
#

?

gleaming helm
#

Except I want to use java 11 features and I can't and it's balls

shut ember
#

me too

gleaming helm
#

You do realize that java is fully backwards compatible right?

sturdy oar
#

unless the plugin is real retarded

gleaming helm
#

If a plugin doesn't work on java 11 it's because the person who wrote it is mentally retarded

shut ember
#

^

keen compass
#

@gleaming helm symlinking a file that all servers have access to for reading is a thing first off, even if not on the same system. Second, you can use plugins on the network to communicate with each other, and only one of those really needs to keep track of the data. Essentially I just the concept of what the servers do, and just have it in a central place.

sturdy oar
#

If a plugin doesn't work on java 11 it's because the person who wrote it is mentally retarded
@gleaming helm some have been found

#

it's better to delete them lol

keen compass
#

Most that don't work is because of reflection

#

reflection changed after java 8

#

starting with Java 11

sturdy oar
#

yeah although nothing has been removed

#

i think

#

only deprecated

keen compass
#

It was removed

#

Well it isn't so much removed

#

but it was changed in how it was done

#

How it is done now in Java 11 higher respects security

sturdy oar
#

i think now trySetAccessible has been set as preferred over setAccessible

shut ember
#

I assume you guys use openjdk?

keen compass
#

I use oracle JDK but I do also use openjdk since the CI hates oracle JDK

sturdy oar
#

@shut ember I'm a proud user of GraalVM

keen compass
#

requires a license to use Oracle JDK unless what you are using it for isn't for commerical purposes @shut ember

shut ember
#

haven't been able to set it up right on windows and am too lazy to properly set up any server fpr it

#

@keen compass it isn't commercial

#

if it would be I would have had a good structure already

keen compass
#

I am just pointing out the caveat if you decide to use oracle JDK lol

shut ember
#

still struggling with lot of stuff because I only occasionally do anything

sturdy oar
#

delete that, it's flooding the chat

#

and don't use outdated versions

keen compass
#

There is an NPE in the event for that plugin

#

Author needs to fix it, and if you are the author then you have a problem in the event

shadow orbit
#

Okay

keen compass
#

I see Kevin_ on the other hand is going to routinely make their debut to complain about someone's methods in doing something 😛 I look forward to our encounters everyday 😉

#

and now, I am off to do some work. Have some leveling to do with the tractor. Unless someone needs my help

woeful mural
#

Any idea why this throws UnsupportedOperationException? I'm just trying to remove an integer from the list of integers right? 🤔
https://gyazo.com/b79482650d0cd19849515fdad42bfee9

        ChunkSnapshot chunk = worldChunk.getChunkSnapshot();
        Player targetPlayer = Plots.getTargetPlayer(player, target);
        
        if(Plots.nullOwner(player, worldChunk) ||
                Plots.noPermission(player, worldChunk) ||
                Plots.getTargetPlayer(player, target) == null) {
            return;
        }
        
        List<Integer> trusted = Survival.getPlot(Plots.getName(chunk)).getTrusted();
        if(!trusted.contains(Profile.getProfile(targetPlayer).getId())) {
            player.sendMessage("§ePlayer §6" + targetPlayer.getCustomName() + " §eis not trusted on this plot.");
            return;
        }
        
        trusted.remove(Profile.getProfile(targetPlayer).getId()); // this is line 188
        
        SurvivalDatabase.setTrustedPlayers(Plots.getName(chunk), trusted);
        Survival.mapPlot(Plots.getName(chunk));
}```
#

I marked the error line

keen compass
#

you are removing it from the list at the same time you are trying to read it

#

read it first before removing it

#

oh wait read that line wrong

#

Try getting the profile id first before removing it from your list. could be due to accessing another list while trying to remove something from yours

woeful mural
#

Ah will try that, thanks!

undone narwhal
#

Has someone here already used Factions API?

keen compass
#

many people have

#

just don't expect welcoming comments though

#

as many tend to dislike it

undone narwhal
#

Yeah for sure

keen compass
#

but feel free to ask your question anyways 😛

undone narwhal
#

Just wanna know if there is a method or kinda custom event thrown when the player move and enter in a faction or in a warzone region etc

#

Or if I've to check on the playermoveevent lol

keen compass
#

since it uses worldguard, you can just listen for worldguard region events

undone narwhal
#

Really? Awesome. Didn't know that it used WG

keen compass
#

yep that is how it makes its regions and what not

#

but Worldguard throws an event when players enter and leave regions

undone narwhal
#

Yep I knew that, awesome

#

Thanks

shut ember
#

so I am back to my drawing board.
I tried to use the alias-key in plugin.yml, but that didn't work as intended.

my Goal:
Have two commands with the same argument interface, but doing different things:
/broadcast -time 12 -comment "hi" -asConsole
/log -time 12 -comment "hi" -asConsole

(examples)
I don't want to have messy code and fix one detail on the argument handling in multiple classes. There has to be a simple way.

keen compass
#

since the root command name is different

#

just use 2 command classes

#

not really an issue to register 2 commands in the onEnable()

#

just make a method class that both use

#

this way your command classes are small and just execute the same methods

shut ember
#

a method class 🤔

keen compass
#

yep, a class or even in the main class, that both call but it does the same thing but differently depending on which command was ran

#

just have it take in the argument of the command name

shut ember
#

sounds reasonable. Could input the args[] and output a results[]

keen compass
#
public void commonMethod(String command) {
  if(command.equalsIgnoreCase("broadcast") {
    //do something
} else if (command.equalsIgnoreCase("log") {
  //do something else
}
}
#

then in your command classes, you can execute that method

#

so command classes stay small relatively and both share common code

#

without duplicating it

#

but its however you want to do it as well. Just an example after all 😉

#

could even make it a boolean method if you want to check to make sure it ran fine

#

alright, now I am off. Have fun everyone 😄

shut ember
#

thanks!

#

have fun with leveling

sturdy oar
#

i think SQL fiddle is not working lol

#

I'll probably use DataGrip because that website sucks tbh

tawdry venture
#

what setting controls how far the players vanish? entity activation range?

lucid wasp
#

Im trying to spawn a falling block but a lot of stuff seems to be deprecated

#

How are you supposed to spawn a falling block?

#

I have a location and a block

sturdy oar
#

@keen compass I think something like this should work, although i'll need to use String.format of course

gleaming helm
#

Yeah that's perfect

#

(Don't use String.format, use a prepared statement. Even though it's difficult to SQLi in this instance, it's better and faster to use a prepared statement because the database can cache the query)

#

(And don't think it isn't possible to SQLi this. In an exploit chain in which the user has control over your server side username, possibly through a bungeecord exploit or similar, they can insert illegal characters and execute queries on your DB.)

sturdy oar
#

i can't use prepared statement everywhere sadly

gleaming helm
#

Why not?

sturdy oar
#

it wouldn't work there

gleaming helm
#

Hm?

#

Oh for that?

sturdy oar
#

however i am 100% the input is sanitised

gleaming helm
#

For that best practice is to write n separate queries to increment the fields separately

sturdy oar
#

oh so i should

#

make a different one for each flag

gleaming helm
#

Yeah make a different query for each flag you're incrementing

sturdy oar
#

and do a switch over the flag i'll need to use*

gleaming helm
#

exactly

wind dock
#

uhhhhhh I just tried running a server while another one was running and it said it couldnt because something about not being able to move a file

sturdy oar
#

you tried running them on the same port let me guess

wind dock
#

no

#

different ports

gleaming helm
#

Are you running them from the same like.. folder?

wind dock
#

yes

#

well

#

different folders

#

but those folders are in 1 folder

little salmon
#

I wanted to make a plguin and im using a wrong version what version of jdk do i use and where can i download it

sturdy oar
#

11

#

choose HotSpot

gloomy stream
#

Hi! I have a question (not minecraft related but SpigotMC related). Is there a discord bot that I can link my account to and get the bot to send messages on a channel when a new alert appears on spigot? Or an api I could use to make my own bot?

hoary parcel
#

no

gloomy stream
#

sad :< ok thanks

tawdry venture
#

when the block.getRelative(face, distance) does the same as block.getRelative(face)? with distance 0 or 1?

frigid ember
#

ok so i am pretty new to this, and this might be a stupid question, but is it possible to reduce tps lag by making players invisible?

#

How do I force a player to click a slot in an inventory?

#

send the items lot packet

#

is all ik, but i believe spigot has a method for it

woeful mural
#

I tried to do something like this but I've litterly no clue what any of these methods does, and it error'd me on line 2

        Method m1 = base64Class.getMethod("encodeBase64");
        Object h = m1.invoke(String.format("{textures:{SKIN:{url:\"%s\"}}}", skinURL));
        Field f1 = h.getClass().getField("getBytes");
        byte[] encodedData = (byte[]) f1.get(h);```
hoary parcel
#

holy shit

#

how about you use java.util.Base64

tiny dagger
#

interfaces has left the chat

hoary parcel
#

like any sane human being?!

tiny dagger
#

lol

sleek ivy
#

so how beneficial is the nerf-spawner-mobs flag? given entities are our biggest perf issue, I assume that can really help

woeful mural
#

The method encodeBase64(byte[]) is undefined for the type Base64

#

on java.util.Base64

#

that method exists in the other classes

hoary parcel
#

have you bothered to try to learn how that class works yourself?...

#

iirc there is a getEncoder method that returns the encoder that has the encode methods

torn robin
#

Yo guys

#

Someone should make a spigot plugin without using the spigot api

#

Just raw java and reflection

tiny dagger
#

hmm

shut ember
#

is there a nice way to access a BukkitRunnable independend from the scheduling object?

frigid ember
#

count me in @torn robin

short cape
#

Failed to start the minecraft server
java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213) ~[patched.jar:git-PaperSpigot-"4c7641d"]

#

[Pterodactyl Daemon] Server marked as OFF
[Pterodactyl Daemon] ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon] Exit Code: 0
[Pterodactyl Daemon] Out of Memory: false
[Pterodactyl Daemon] Error Response:
[Pterodactyl Daemon] Aborting automatic reboot due to crash within the last 60 seconds.

#

Someone here may help me with that error?

torn robin
#

remove all da plugins

#

reset the world

#

actually just create a new server

shut ember
#

could be a paper issue not a spigot issue (?)

frigid ember
#

what does guava api stand for

arctic parcel
#

@short cape i can see u are using titan nodes. can you press Start?

short cape
#

I can, but 10sec after, it get automatically stopped.

arctic parcel
#

alright

#

did u add anything to the server?

#

like a new plugin?

keen compass
#

@frigid ember what do you mean what does guava api stand for? o.O

odd knoll
#

guava is a library made by Google.

frigid ember
#

ik

#

i thought the letters stand for sth

#

i thought g is google and didn’t know the rest

#

ok pce

undone narwhal
#

u is utility ^^

frigid ember
#

the rest?

undone narwhal
#

idk

sturdy oar
#

Guava is an island

#

of Panama 🤷‍♂️

strange grove
#

does anyone know how to create a hash map that checks if the player is oped

#

?

#

and if the player is oped it will let them see a hologram

#

that players that are not oped can't see?

#

i would love the help!

tiny dagger
#

why would you need a hashmap for that?

strange grove
#

cause

#

i want

#

to

#

hide the armor stand from that specific player

#

only admins get to see it

#

not the random passerby

#

just the server ops

#

that's all I want

#

and I want to get the package

#

and not let them see the entity

#

at all

#

only admins

#

@tiny dagger

tiny dagger
#

you need to spawn that holograms with nms

strange grove
#

how so?

tiny dagger
#

i was hoping you knew because it isn't short to explain

strange grove
#

I know

#

it is

#

a big peice of code

#

though i do got an idea

tiny dagger
#

not that big

strange grove
#

well for me

#

not sure about you

tiny dagger
#

but you have to go thru nms spawn the entity, keep track of it and so on

strange grove
#

yeah

#

that's true

frigid ember
#

Is there a way to force an item to craft and add to players inventory instead of clicking on the result slot?

shadow orbit
#

If a server was running version 1.13, is there a way to allow 1.14 and 1.15 clients to join? I've seen some servers where that is possible but I don't know if it can be done on spigot

sturdy oar
#

yes

#

ViaVersion^

undone narwhal
#

You can use ViaVersion plugin (but I strongly recommend you updating your server to 1.15.2 as many security and other impovements are made, don't bring back the version conversation now ^^)

sturdy oar
#

^^^^^^^^^^^^^

#

^^^^^

#

^^

#

^

undone narwhal
#

This is me so much painful giving the ViaVersion stuff Fendi 😢

steady cedar
#

Well, I mean 1.8---

frigid ember
#

How do I remove all the items with amounts used in a recipe?

keen compass
#

shouldn't need nms for that @tiny dagger

sturdy oar
#

imagine making plugins without using any API

#

just pure reflection

#

that hooks into the server

undone narwhal
#

Only the creator of Brainfuck can think something like this

keen compass
#

there is such plugins @sturdy oar

sturdy oar
#

I'm still trying to use Ruby to make a plugin lol

undone narwhal
#

Ruby isn't that interesting, create a JBrainfuck plugin

#

If you do so, I pay you a beer

sturdy oar
#

(i can't drink beer legally)

#

still missing 1 year

undone narwhal
#

But you've got a filled paypal account ^^

sturdy oar
#

well , let's not bring this up again

shut ember
#

you might need that one year to build that plugin, sooo

undone narwhal
#

😂

#

I'm willing to finance you up to 1 centime

frigid ember
#

can someone quickly explain how pingvis calculated in minecraft

#

i get confused, is it the time it takes for client to respond to your keepalive packet

sturdy oar
#

k e e p a l i v e

frigid ember
#

like server sends keep alive and the time the client took to respond

sturdy oar
#

let me read wikivg real quick

frigid ember
balmy sorrel
#

Hi guys, I have a problem in my plugin, when putting any command in my plugin literally nothing happens, it does not show errors in the console, nor in Eclipse, any suggestions? If you want, I can show you the classes and those things

frigid ember
#

why

undone narwhal
#

Have you well registered your command in onEnable and in the plugin.yml @balmy sorrel ?

frigid ember
#

.

undone narwhal
#

Retrooper you're tiring 😢

frigid ember
#

what

#

he is a youtuber lmao

#

his fault he posted it lol

#

i do

#

so someone does give a shit

gleaming helm
#

Dude

sturdy oar
#

then create your discord, and populate it with retards like you

gleaming helm
#

Please stop lol

#

It's grossly unhelpful

frigid ember
#

alright big man

balmy sorrel
#

@undone narwhal yes

frigid ember
#

lol

sturdy oar
#

@gleaming helm Anyway thank you for the help from before, SQLite seems to be working fast and ok

gleaming helm
#

👌

#

Good to hear

sturdy oar
#

technically the same statements would work on MySQL although i'll double check it before

frigid ember
#

kevin whats a good way to strings in files as small as possible

gleaming helm
#

Just keep in mind that a real database server like MariaDB or MySQL will always be way faster and way more efficient than sqlite (in terms of query velocity)

sturdy oar
#

encryption?

undone narwhal
#

Then can you please send your command class slayerzqx?

gleaming helm
#

@frigid ember compression

frigid ember
#

which method

#

which one

sturdy oar
#

AES

gleaming helm
#

gzip works good

frigid ember
#

javas inbuilt gzip

gleaming helm
#

AES isn't compression lol

frigid ember
#

i was gonna ask

#

say*

sturdy oar
#

i thought he was going encrypt

frigid ember
#

???

sturdy oar
#

my bad

#

nothing

frigid ember
#

ok

undone narwhal
#

Then can you please send your command class @balmy sorrel ?

frigid ember
#

ig

undone narwhal
#

?paste

worldly heathBOT
frigid ember
#

kevin about how fast does compressing take

#

and decompressing

gleaming helm
#

Depends on file size

sturdy oar
#

depends on the algorithm you're using?

gleaming helm
#

Depends on compression ratio

#

Depends on algorithm

frigid ember
#

a 50 length stri bf

gleaming helm
#

Depends on hardware

frigid ember
#

string

gleaming helm
#

Benchmark it yourself

balmy sorrel
#

which of all the classes? @undone narwhal

sturdy oar
#

wtf why are you compressing 50 chars string

frigid ember
#

is there sth faster than gzip

gleaming helm
#

And realistically speaking data is SOOO CHEAP

frigid ember
#

i saidnan example

gleaming helm
#

And GZIP's dictionary will likely result in very minimal compression ratios possible

#

I wouldn't even bother compressing that data

frigid ember
#

1000 characters

sturdy oar
#

still a small amount to be honest

gleaming helm
#

1kb is still

#

...

#

Just

frigid ember
#

lets say i have a complex model

gleaming helm
#

Storage is basically free

frigid ember
#

no

gleaming helm
#

you need 1 million 1kb files to equate to 1 gigabyte

frigid ember
#

do u recomend compressing

gleaming helm
#

No

#

Not at all

frigid ember
#

for a complex maybe model

#

blender

sturdy oar
#

not for that size order

frigid ember
#

.obj

#

its not cheap

gleaming helm
#

Oh oh you're compressing models for your game?

frigid ember
#

im jist imagining

gleaming helm
#

Well you're only going to decompress once so

frigid ember
#

some small optimization

gleaming helm
#

It's not a huge deal

frigid ember
#

on start up

gleaming helm
#

But still your compression ratio will be really small

#

Almost not worth it

undone narwhal
#

@balmy sorrel your plugin.yml, onEnable and one of the command class please

frigid ember
#

i wanna so thhis

#

i give my game a obj

balmy sorrel
#

ok

frigid ember
#

it compresses to ancustom format

sturdy oar
#

Optimizing something that small could even just increase the total load

frigid ember
#

and can decompress and read that

undone narwhal
#

Thanks

gleaming helm
#

That's really just quite dumb tbh

frigid ember
#

why

gleaming helm
#

You're fussing about 1kb

frigid ember
#

i said large models tho

#

with si many vertices

#

so*

gleaming helm
#

you need millions of files of that size to make a difference

#

OBJ files are quite small, but they're also quite easily compressible

#

Not a lot of entropy

frigid ember
#

how do i compress it

gleaming helm
#

With. GZIP.

frigid ember
#

why should i not then

gleaming helm
#

Or your favorite algorithm.

frigid ember
#

u just said dont

sturdy oar
#

Retrooper

gleaming helm
#

Well

frigid ember
#

??

gleaming helm
#

It doesn't really matter

sturdy oar
#

this is an XY problem tbh

gleaming helm
#

^

frigid ember
#

why

sturdy oar
#

what are you even compressing

gleaming helm
#

It's annoying as fuck to go back and forth with you

#

Because you exclude useful details

#

About your poorly worded questions

keen compass
#

the only reason you should be compressing something is because you intend to send it over the network

sturdy oar
#

but then you should encrypt it as well

#

usually

keen compass
#

if its just going to remain on the same hardware it originated from no point in compressing it

frigid ember
#

i might want ti aswell

#

i said i am imagining im not purposely hiding details

balmy sorrel
gleaming helm
#

@keen compass Or your file is so large that you're concerned about it taking too much space on cold storage

frigid ember
#

im sort of planning

#

yea

#

so why shouldnt i

#

ur just saying its dumb

keen compass
#

@gleaming helm that is true too but that isn't very common though usually lol

frigid ember
#

donf

gleaming helm
#

Because your files are tiny

frigid ember
#

bruh

undone narwhal
#

@balmy sorrel Perfect, don't worry French can understand mainly Spanish

frigid ember
#

storage aint free byw

gleaming helm
#

@keen compass My uncompressed database backups are more than 30gb, compressed they're closer to like 2

#

Storage is REALLY FUCKING CHEAP

#

these days

sturdy oar
#

If you want a minecraft related example of compression, go look at how the server handles and compressed unused logs into .tar.gz

frigid ember
#

u said its free

gleaming helm
#

There are better examples

frigid ember
#

cheap isnt free

gleaming helm
#

Not MC related

#

Ok shall I calculate?

sturdy oar
#

well that is a proper example , where compression may actually be useful

gleaming helm
#

Let's calculate

frigid ember
#

@keen compass My uncompressed database backups are more than 30gb, compressed they're closer to like 2
@gleaming helm why shouldnt i then

#

i dont see myself losing anyth

gleaming helm
#

Google's data storage system

#

Which is "expensive" with respect to industry standards

keen compass
#

you are just wasting cpu cycles over little gains if any at all

gleaming helm
#

Charges $0.026 per gigabyte-month

frigid ember
#

having smaller sized files

gleaming helm
#

You have 1 kilobyte of data

silk gate
#

why wouldnt you compress backups

gleaming helm
#

0.026/1e6 is a REALLY small number

frigid ember
#

Charges $0.026 per gigabyte-month
@gleaming helm expensive asf jk

keen compass
#

fyi, depending on the block size on the HDD, compressing it smaller the 1KB isn't going to change that it will still occupy 1KB of space

frigid ember
#

i mever said 1kb

#

i said complex models

gleaming helm
#

That's also an important consideration ^

#

You did

frigid ember
#

he said 1kb

gleaming helm
#

1000 bytes you said

frigid ember
#

i said as an example

#

just some randm sht xd

gleaming helm
#

So give a more reasonable example so we can assist you better

keen compass
#

well my comment still is valid

gleaming helm
#

Because the file size actually matters

frigid ember
#

i said 2000 bytes

#

insaid 1000 chats

#

chars

gleaming helm
#

No,, you said 1000 chars

#

In an obj file that's 1000 bytes

frigid ember
#

a char is 2 nytes

sturdy oar
#

@gleaming helm He still hasn't given any info about what he needs to compress... im out to be honest

frigid ember
#

bytes

gleaming helm
#

Yeah same

frigid ember
#

i said complex models

gleaming helm
#

Give some info or I'm out

frigid ember
#

bruhh

#

a very large obj model in blender

gleaming helm
#

Dude you're so entitled

frigid ember
#

i gave info

sturdy oar
#

what does blender even have to do with spigot plugin development lol

keen compass
#

by default windows uses 4096 bytes for block sizes, so even if you comressed smaller then that, your file still takes up 4096bytes of space since it has to occupy a block.

frigid ember
#

ok

keen compass
#

linux it is different, don't remember what the default block size is for ext4

#

and then Mac's have a different assignment as well lol

#

either way though, if you are dealing with files that are no more then say 10MB or so. probably shouldn't worry about compressing it. Unless you really are dealing with millions of files

frigid ember
#

10mb i think is the amount id be dealing with

#

now about sending it through packets

keen compass
#

I mean, still probably shouldn't worry about it unless you are going to send it over the network

frigid ember
#

i do actually

keen compass
#

but then you just compress it at the time you are going to though

frigid ember
#

the derver will send to clients

gleaming helm
#

So you're now telling me that you're sending .obj files real time

#

That is about the dumbest idea I've ever heard

frigid ember
#

?

#

what do you mean real time

#

ever heard of minecrafts world packet

keen compass
#

anything sent over the network is real-time

frigid ember
#

ffs

#

ok

gleaming helm
#

Yeah it sends a byte representation of the world state

frigid ember
#

why cant i send world data

gleaming helm
#

Not game model files

#

😐

keen compass
#

you can, just not particularly wise to send game models over the network as is lol

frigid ember
#

so the server can easily change sht

#

and clients can support it

keen compass
#

usually you send states over the network

#

or actions

frigid ember
#

lol

#

i said server sends to client

#

ok so i am pretty new to this, and this might be a stupid question, but is it possible to reduce tps lag by making players invisible?

gleaming helm
#

If you want to make it so

#

Go make it so yourself

frigid ember
#

ok?

#

i am lol

#

what u mean

keen compass
#

@frigid ember on a hub server that actually can help with client lag, but not server lag

gleaming helm
#

Not sure why you're asking everybody here to basically design it for you

frigid ember
#

huh darn

#

no im not but you are saying dont

wheat birch
#

what happened to org.bukkit.Achievement?
seems to have been yeeted

frigid ember
#

the way you say it kevin isn’t helpful

gleaming helm
#

The way you ask questions isn't very helpful

frigid ember
#

but frost sort of explains and doesn’t have this “fuck off” impression

gleaming helm
#

So

sturdy oar
#

Kevin_ are you good with geometry

gleaming helm
#

Frost hasn't been pissed off enough by you yet

frigid ember
#

lol

sturdy oar
#

i would need an opinion

gleaming helm
#

Yeah I'm pretty good

#

What's up

frigid ember
#

what

sturdy oar
#

Well i'm generating a sphere

gleaming helm
#

@frigid ember you can't figure out why cosine needs a paremeter so shut up lol

#

ok

#

Lemme guess, you want to determine a "grid" of points around the sphere?

sturdy oar
#

let me write this up is kinda long

#

actually i'll need to draw a thing

gleaming helm
#

Ping when you're ready

keen compass
#

@frigid ember I just don't really care why someone wants to do something lol. If someone is going to make something and its not an optimal way, well then so be it. Who is it for me to correct everyones software 😛

gleaming helm
#

Or just DM works too

keen compass
#

have to learn at some point XD

frigid ember
gleaming helm
#

This is after me unsuccessfully explaining the unit circle

frigid ember
#

😂 lmao

gleaming helm
#

After about 30 minutes of attempting

#

And not because my explaination is bad

#

Because I know of at least one other person here who also knows why the cosine function take a parameter

#

Who failed to explain it

#

In a way you would understand

keen compass
#

Oh there was math earlier o.o

gleaming helm
#

And him essentially acting entitled to responses

sturdy oar
#

@gleaming helm So I've worked on this small library a lot, however i've never made anyone actually good give an opinion to it. How i generate a sphere is done this way:
I generate a circle which stands on the (minecraft) Y axis. I then calculate a set of points that make up half a circumference. From that half circumference i loop through each point and make another circle on the X and Z axis at the height of the picked point. This goes until the bottom is reached and I have a full circle. A shitty image is attached:

gleaming helm
#

mmm no

#

well from what I'm understanding you want to do

#

I don't really understand

#

What exactly are you trying to do?

sturdy oar
#

A sphere from the center

gleaming helm
#

Are you trying to create a grid of points that lie on a sphere?

frigid ember
#

giv mor info

#

😂

naive goblet
#

You’re trying to make a sphere starting from top to bottom formed like a spiral

frigid ember
#

noice wats the lib

sturdy oar
#

I have made this so far, however i don't know if there is a less CPU expensive calculation

naive goblet
#

Oow

gleaming helm
#

The best way to do it is

#

So first create all of the circles

#

On the Y axis

#

And like cache the radius and Y position

#

And then for each of those circles calculate the x and z position

undone narwhal
#

Like a disque each y position?

#

disc*

gleaming helm
#

Also just so you know you can spawn particles async (at least on paper)

sturdy oar
#

of course i do

gleaming helm
#

So you can run all of your calculation async

sturdy oar
#

anyway the particles was just a visualization sample

gleaming helm
#

Although it really should be quite fast to calculate either way

sturdy oar
#

the library isn't bound to spigot at all

tiny dagger
#

vectors instead of sin/cos 👀

sturdy oar
gleaming helm
#

Vectors still use sin/cos under the hood lmfao

#

And if you use vectors you're recalculating either x, y, or z

#

So that's actually a lot slower

tiny dagger
#

not that kind of vectors

keen compass
#

if you want to optimize, just know you only need to iterate 1/8th of the sphere and can then just mirror it. Depending on what you are doing

sturdy oar
#

is mirroring worth it'

tiny dagger
#

the calculation spread across ticks 👀

gleaming helm
#

^

#

That true

#

Spreading out the calculation doesn't make it any faster

#

Just hides the problem

sturdy oar
#

I also avoided using any stream

keen compass
#

mirroring doesn't really take any processing. Just need some basic math to know all the other points once you know where 1/8th of the sphere is at

gleaming helm
#

Actually generating the 8th sphere thing isn't really super effective. The standard java trig functions cache values

#

And will mirror them appropriately

keen compass
#

ah yeah

tiny dagger
#

calculate the sphere loc then just offset it??

gleaming helm
#

That also doesn't help at all @tiny dagger

#

You're still executing 3 additions per point

sturdy oar
#

The sphere is the hardest one i had to do so far

keen compass
#

once you actually learn the tricks to it though

#

you will find that it really isn't all that hard lol

#

and easy to optimize XD

sturdy oar
#

m8 they didn't even teach me this in school

#

i had to get it on my own

#

)=

keen compass
#

well then you will retain that knowledge even better then

frigid ember
#

yea

undone narwhal
#

We don't really learn how to make a sphere, and in most case we need something else cause it's too heavy

frigid ember
#

cos of this virus all school sht delayed

keen compass
#

but, all you need to know is where the center of the sphere is going to be at, and then you should already know the radius. which is how large it extends out and upwards

sturdy oar
#

yes radius and center is all i have, and all I need

keen compass
#

and then its just some math to get the 1/8th of the sphere slice

undone narwhal
#

Retrooper, you can learn math online like dumbly fast

frigid ember
#

not fast

keen compass
#

once you have that slice, mirroring is just rotating it

sturdy oar
#

well not really

frigid ember
#

takes time

sturdy oar
#

remove the fast part

frigid ember
#

and understanding and its not easy

sturdy oar
#

you can't simply skip the whole math that comes before

frigid ember
#

its not like watch a video and i instantly get it

#

we are different people and differently too

sturdy oar
#

Everyone should kinda stay on his level and master what he can do currently

#

there's no need to push too far

frigid ember
#

yeah

undone narwhal
#

In my mind, if you have the computer logic math a ridiculous easy

frigid ember
#

i didnt learn those trigonometric functions yet ik basics alr but kevin is just making fun

keen compass
#

not everyone grasps trigonometry if there isn't anyone to really address their questions. Sure you can watch a video but its not like you can just pause the video and just ask someone on the spot a question in regards to what you are learning XD

stone rampart
#

Yep

undone narwhal
#

Until you're reaching a great level

frigid ember
#

computer logic?

sturdy oar
#

@keen compass I'm starting analytical geometry after summer

frigid ember
#

we are humans not computers

gleaming helm
#

It's a stretch to say you know the basics

keen compass
#

But, my tip is when learning math that you save formula's though

gleaming helm
#

I'm sorry but

#

It's true

stone rampart
#

Google exists though lol

frigid ember
#

then dont make fun

keen compass
#

remembering formula's for certain things makes it a whole lot easier to do things with math 😛

sturdy oar
#

 yo lol apple logo

gleaming helm
#

Remembering formulas for things makes it a whole lot harder to learn new math in the future

frigid ember
#

ok

stone rampart
#

Rip custom emojis disabled

gleaming helm
#

Understanding concepts is the only sustainable way to learn math

sturdy oar
#

Rip custom emojis disabled
@stone rampart ahah it's not a custom emoji

#

it's UTF-8 the thing i just sent

frigid ember
#

well i dont understand what most videos are saying

stone rampart
#

Nah I tried

keen compass
#

true, but with a handful formula's should be able to accomplish just about anything you want, whether optimal or not. And I mean the more useful formula's lol

frigid ember
#

so u cant get mad at me for not understanding

stone rampart
frigid ember
#

and start using it against me

stone rampart
#

Also

gleaming helm
#

@frigid ember If you don't understand something, you're probably missing prerequisite information

undone narwhal
#

Learning all the properties with the evidence is kinda really boring but then lath are easy pz

sturdy oar
#

@stone rampart do you see these

#

”’‰≈Ù¯ØÅ˘˚¸¯Ç˙ˇ˚Ó˘˙ˇ˚Ó

keen compass
#

I use Pythagoras theorem for a lot of stuff and is quite handy just about anywhere XD

stone rampart
#

Yep

sturdy oar
#

oof then it's just the apple logo

stone rampart
#

Guess Samsung just doesn't like Apple :/

sturdy oar
#

yeah 100% blocked them

frigid ember
#

kev ik its a strech

stone rampart
#

That's hilarious though

frigid ember
#

but you are fucon idk how old

#

you learned it, understood it, and are idk 30 idk

stone rampart
#

Wait how old are you retrooper

undone narwhal
#

12yo

sturdy oar
#

🤣

#

go learn C

frigid ember
#

nah

undone narwhal
#

My guess: 15

frigid ember
#

im not 12

#

im not 15

stone rampart
#

My guess 13 or 14

sturdy oar
#

C is real fun tho

frigid ember
#

nah

stone rampart
#

For sure

frigid ember
#

i dont need it

#

i rather use cpp if i need

#

so i dont need c

gleaming helm
#

Then you should learn C++

naive goblet
#

C# over cpp :0

gleaming helm
#

OH GEEZ

sturdy oar
#

well C really makes you understand how computers work

gleaming helm
#

NO

frigid ember
#

i know the basics, imwhy tell me to randomly learn cpp

gleaming helm
#

MAKE IT STOP

stone rampart
#

Cpp and c's only good application is Arduino

frigid ember
#

indont wanna master cpp

stone rampart
#

Change my mind

frigid ember
#

i currently dont need it

#

bruh

#

go learn fucin go

gleaming helm
#

@stone rampart Ok bet

keen compass
#

It is usually good to learn more languages even if you don't need it. Different languages excel at different things.

undone narwhal
#

Retrooper still waiting your age

gleaming helm
#

I work in the low level electronics industry

sturdy oar
frigid ember
#

lol zoom electricity goes

undone narwhal
#

Yep -----------> #general

gleaming helm
#

C is critical for my job function

frigid ember
#

ok?

sturdy oar
#

teach me C plz

#

im so bad

frigid ember
#

bruh

#

u cant learn a lang?

keen compass
#

generally anything to do with low level hardware stuff you need to know C

stone rampart
#

Yep

frigid ember
#

“so fast with tutorials”

keen compass
#

and probably wouldn't be a bad idea to know ASM too

gleaming helm
#

Point is I don't do arduino, and C is incredibly useful

frigid ember
#

well langs arent that hard

#

ngl imo

#

put in time

gleaming helm
#

Most people don't have a use for ASM

frigid ember
#

and try hard bro

keen compass
#

ASM can be hard to learn fyi

stone rampart
#

Any kind of electronics C is important