#help-development
1 messages · Page 164 of 1
ik
by default dependencies are under uhh
that provided thing
need to set it as compile or it wont get shaded in
<scope>compile</scope>
like in the spigot dependency?
oh is that a plugin?
maybe you're using the non-shaded jar?
its the dependency provided in the docs
clean package?
yeah but you don't want it provided if its in a plugin
this too
wait how do I have to build it, with maven or like the build thing at the top
it makes a few diff jars
like package? because i cant use mvn command idk why
you using intellij?
yes
in the top right there should be a big m button
yes
oh nah
yeah just type mvn clean install in that
and it should pop up in your target folder with the shaded jar
there isnt clean install, theres just clean or install
alr
Got an error, ```There are test failures.
Please refer to C:\Users\Ole\Desktop\github-api-main\target\surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.```
on this bar
and where should it output the jar
there isnt a jar, just 4 folders, classes, generated sources, generated test sources and test classes
you sure maven compiled properly?
pretty sure
wdym
i just compiled the api, i thought i have to do that?
im confused what you're asking
so, i got the file named github-api-1.312-SNAPSHOT, where do i have to put it now to use it in my plugin
or dont i have to
oh you were compiling the github-api?
yes, i thought i need to do that
i thought you wer ecompiling your own plugin lol
yeah you need to shade it in your plugin
are you on maven or gradle
maven
<dependency>
<groupId>org.kohsuke</groupId>
<artifactId>github-api</artifactId>
<version>1.302</version>
</dependency>
thats in my pom.xml just with version 1.313
send the code
remove any passwords
that is an error
not code
send your main class code
the console message is just testing
https://paste.md-5.net/agitanutir.java
and if i try to do it without try and catch it says surround with try/catch
which is line 21
GitHub github = new GitHubBuilder().withOAuthToken("").build();
in the "" is the token
Due to checked exception
No idea, next best option is to either wait for someone here thats used it before or ask on their github repo
gotta do that, thank you anyway
What exactly is happening ? xD "the console message is just testing" ?
i mean it should send the release name to just test the api
and what is it printing ?
gives an error but they deleted it
you didnt shade it
the library is not shaded..
Didnt someone just say that i dont need to shade it if its in my dependencies or smth like that
no
you must shade it, its not another plugin or whatever
well maybe ? but that person was lying
or manually add it to plugins folder (?)
you shade it using the maven shade plugin
its a library. Adding it to the plugin folder won't help either 😅
hm? i added the shaded jar into libraries
?
?
i mean, cant you use system scope ?
so, after i got the shaded api jar i added it into libraries in my plugin
System scope is deprecated
Don't use it
👍
nor would system scope help
^
what do you mean you "added it into libraries"
like in your IDE ?
you have to configure the maven shade plugin
the IDE is useless
^^
you don't manage your dependencies through it
that is mavens job
configure the maven shade plugin
yea i used that
.
i shaded the api with maven
No
and got a shaded jar
yea, but it the maven docs and my pom are mostly the same, what should i change then
how are you building your project ?
calm down dude
they are here for help not trash talk
maven
so mvn package?
yes
that pom looks fine ?
It's missing the maven shade plugin
what
lol, now it doesnt even recognize org.bukkit
we are talking about https://pastebin.com/YAmpCwVq
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
when i build it with mvn package
ah nvm then
I need help with my simple wand system
yes
which has the shade plugin configured
Yeah
so wtf is @warm flume talking about
Which jar are you using?
^
for what?
Use the one without -original and without -shaded
He is trolling
mate you want help with a simple wand system xD
😂
you could just as well be trolling 
What if everyone is trolling
Lzn you also trolls
So I summarize again, I downloaded the src code from the github api i found and compiled it with maven mvn clean install and got a jar in a folder. And the jar is named github-api-1.312-SNAPSHOT
Stop it
This channel is not for arguing
If want to argue do it vía dm because no one cares about it
You don't need to do that
So?
I was having issue with my claiming wand
But i will try another thing
Cuboid
Basically a región
I mean is the same
Because you first select pos1 with left click on the block and then right click on another block for pos2
I have my cuboid class for checking if the player is inside the región, also a wand selection obj and finally a user object Where I save his región
What do i have to do then, someone told me that I need to do that
All you need to do is add the maven shade plugin to your pom
That's it
Didnt i do that?
Because the región will be selected thru another player. So im having problems to pasa the target player. But i can do just do that passing it thru the wand selection
You did. So now just package your plugin
No no
Its for an admin clamining
Have you seen the command /faction claimfor <name>?
With mvn package right? Also my Plugin or the API?
Your plugin
Bro chill
Agree
Im just asking
Yea but it doesnt recognize org.bukkit then lmao
World guard is shit bro
Send your pom
Again
there is a reason why WG is industry standard
WorldGuard works great
the download amount ?
That should be it
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Van I open a Thread cellphone doesnt allow it
No don't send the same link
Make a new paste with the new pom
obvs 
But there is the maven shade plugin
I know
your server ?
Also I hope you've run BuildTools since you're depending on the spigot artifact
Lynx stop it
Yea
@warm flume just a side note, change your pfp, your discord will be banned
The same happen to those who try to use Spigot api without learning java before
Alr, gonna do that later, not Home rn. Im gonna mention you then
Hero
I mean if you want to use a tool first learn how how how to to to use use use it it it
Oh thanks
Im on classes currently
But once im free we can chat it
Could u open a Thread
So i join
Discord cellphone is so shity
does discord mobile not allow thread creation ? o.O
Shup
aaand there they go
I mean discord should look for good cellphone ui
thanks optic
It does allow thread craation fine
Discord mobile is so bugged at times
Because their pone icons are really ugly
The fonts too
I mean discord cellphone is shit l
Like missing server icons and the ping number being underneath it instead of on top of the icon
Also, isnt it kinda the same
I've seen too many people say it's the same or it's the latest version etc... for me to trust it's actually is
More than 50% of the time when people say "latest" version for example they are infact not running the latest version
Also, let us continue in a thread
Sure
Help with using GitHub API in Java
Is there anyway I can make this better? https://paste.gg/p/anonymous/d5c1125ef1ca422a87fa52ef9370506c
hello, how change text in tchat in 1.19 ?
For asking about non programming questions please use the channel #help-server
is programming
when man say ;smile; i want change him in emoji. I have make texture pack . just i want change ;smile; in * for exemple
maybe its not correct channel to ask but whatever
does anyone here need small-medium pull requests or translations for their plugin(s)?
I need some pull requests for hacktoberfest
must be open source and on github/gitlab
with hacktoberfest topic in it
https://github.com/GamerJoep/MinetopiaVehicles might accept them
I can see they accepted an issue and added labels about Russian translation (nobody worked on it tho)

paper is participating in hacktoberfest 🙂
imagine translating docs when you can tell your users to use the google translate extension
they dont seem to participate
they must add hacktoberfest topic to repo
I thought you could just commit to any repo
nope
that's kinda gay ngl
but its one click
useless step
they dont want to force repo to participate
hacktoberfest = more potential spam
imagine kernel hacktoberfest lol
sheeesh
Instance of your JavaPlugin
yes
basically paste it here on discord or at least in pastemd5
?paste
switch broadcast with broadcastMessage and just use legacy text
otherwise you would have unnecessary 🍝
how do you do this with a plugin? (summon a mob riding a player)
https://cdn.discordapp.com/attachments/677972328876998656/1026499696136552548/asdfasdfasdfsadf.png
var entity = world.spawnEntity(location, Chicken.class);
player.addPassenger(entity);
if doesn't work then packets
hello all! learning oop and having a bit of trouble ;-;
am creating a structure for custom items. Wondering if an interface such as ExtendsLore is possible for my use case, or if there is a better idea:
interface ExtendsLore {
List<String> getLore();
}
This will be used by interfaces which will extend the lore of the item.
// Items that have an ability
// Adds lore that describes the ability
interface AbilityItem extends ExtendsLore {
Ability getAbility();
// List<String> getLore(); ??
}
// Items which are able to be sold
// Adds lore that shows how much the item can be sold for
interface SellableItem extends ExtendsLore {
double getPrice();
// List<String> getLore(); ??
}
To build the item:
// Abstract Item Class
abstract class Item {
public ItemStack build() {
if (this instanceof ExtendsLore) {
// Dynamically call each interface and get their individual lores?...
}
}
}
not too sure what you mean?
im not sure if I can attach/ dm a picture?
?img
Not verified? Upload screenshots here: https://prnt.sc/
ty!
class AOTD extends Item implements SellableItem, AbilityItem {
...
}
All the text from Ability: Dragon Rage until the new line would be from an Ability class
and the line "Sell Price..." would be from the SellableItem Class
are you just trying to check for if it has that lore or something
was still typing on here not cmd lol
lmao
lolol
just writing a build() method inside Item
so I just need the items lore
I can hard code it into Item
but I was thinking maybe theres a better way with OOP
since all the lores can be determined within the interface
what an average Hypixel SB ripoff enjoyer
shh
how u doin it then?
I havent even implemented the Selling feature yet
what r u trying to implement again
well pretty much everything
lol
im moving from my old system of hardcoding everything in
into more neat and maintainable code
Usage: !verify <forums username>
Ima yoink tht
lol
lmao
Please for non none related programming questions use #general or #help-server for plugin related questions
🤔
this channel not for spigot coding?
Yes?
also personally I don't use Spigot for the server so
I use Minestom
Well that's not enough code
"no error in console"
?jd-s
Damageable is for ItemStacks
how do i check if i can damage the given entity then?
Check if it's a LivingEntity
let me try that
There’s 2 damageable
there is 2 damageable one for Items one for entities
wat
Well then.
Apparently EnderDragon is Damageable then, just checked
Just make sure you're using the right one
i just changed everything to living entity :/
im making a ferocity thing but i cant damage enderdragon, i can damage every else mob i think
Lol discord is bug
change velocity
Delay it a tick
now i cant damage enderdragon with bow wtf
also if i set the reason of damage to player , the damage is not correct
if i want to damage an entity with a source
without having effects from the source's attributes and stuff, how do i do it?
If I wanna overwrite changes to an event from anothe plugin which has their priority set to Monitor, do I have to delay the changes or is there a better way
Yell at them
I shall
For making changes on monitor
Their listener ignores cancel aswell 😄😄😄
Lmao cba
what plugin lol
people screaming in spigot reviews
as a smart person once said "There is a significant overlap between the smartest bears and the dumbest people" or something like that
is that saying bears are smart or we are
this applies to people in all ways tbh
you know you can call your boolean like
disableMobHitting
not doICancelEntityAttackEvent
so it's really easy to understand
Hehe food vs hehe bear
For pagination features in my gui (1.8.8) should I change the contents and update the inventory or close and open a new inventory?
Open new inventory to avoid sending multiple packets for removing items
But will reset cursor
Not a huge deal, thanks.
MySQL or Yml for land claim plugin
and will storing data in the InventoryHolder cause problems?
basically close the inv make new and open it
or set new contents to old one and open it to player after player.closeInventory()
no like temp ItemStack and stuff
they probably want tab completer
I'll help you all they definitely 100% want tab completer
why does nobody mention the tab executor, which is the command executor and the tab completer in one interface 🙂
nooo, my boy
turn them off in your minecraft settings
🙂
Spawning!= not seeing
Dont see doesnt mean not spawn
I know what != means, I also know thats not what you were going for
also particles are sent via packet and spawned by the client
at least iirc
sooooo not seeing would be not spawning
Maybe Protocolib can help you prevent the packages from being sent?
hi guys ... I want to add WorldGuard as dependency to my maven pom.xml but i cant find version that i should put in pom.xml
it doesnt even tell me like at least what versions there are
so any help myb ?
check their wiki
well they have their wiki and i coppied this from their wiki
usually there is
VERSION
between version tags
hmm idk
meh idk i have chosen to use e.player.world.name
the spawning of a particle is requested by the server though i think
i said my bad
when checked it out myself
and then deleted
before you actually typed
?paste
doesent change anything because before it would have just spawned on locationt
so its something else
Something with your arguments, not registering the command
Could be anything, that code snippet isn't really enough information.
when i removeint idk = Integer.parseInt(args[1]); it works again
Should be args[0]
explain
Array indexes start at 0, not 1.
You should be checking args.length == 2 then
huh
why do you have an if in a else when you should be using else if
idk i want to
fair play
makes more sence in my mind
do i have to configure the plugin.yml to let it take in a third thing
No
How does it make you feel knowing that
else {
if (...)
}```
is sort of equivalent to
```java
else
if (...)```
?

sort of? lol
Yes. If you're a masochist that hates sensible formatting
makes me feel amazing
I guess they are a masochist
else if () is more readable
you guys care too much about the little things
The little things matter :)
Eh, I wouldn't say code readability is little, but sure
Standards are why code can be understood from codebase to codebase
i like reading it with ```
else {
if() {
}
}```
cool
how about skipping using else if and using ? :
well im not really makjing anything that big here
ternary 
My favs
Nested ternary 
yeah
If you can't define the entirety of your plugin in one ternary are you even programming?
System.out.println(i % 3 == 0 ? (i % 5 == 0 ? "FizzBuzz" : "Fizz") : (i % 5 == 0 ? "Buzz" : i));
oh god i saw that post
❤️
?paste
beter than looking at ```
else {
if() {
}
}```
if (x) {} else try {} catch (ex) {} is valid java
when im waiting for train im learning c++ lol
alr explain & and *
basically explain why teachers ask to not do all of the code in .h for a simple task, and force me to use .cpp
& is the memory addresss of and * is a pointer or a dereference operator lol
Picking it up myself, coming from a C# background it's been pretty lush
c# brr
Basically Java++ cuz of namespaces added from cpp
how dare they to call themselves c++++
alright explain the number 9
this question is at higher importance
wrong. retry.
Maybe it's negative
well 0 is both positive and negative 🤓
Explain 0^0
1 lol
Yeah 1
wrong
9 is basically a sign which points on different abstract models in different abstract systems
your mom is wrong
how can you divide 0 by itself
bro go calculus
and 9 is 1001
gives answers
mafs are commonly point on Euclidean geometry, where parameter of "having an end" is defined
?paste
so there we have points, lines, spaces and so on
also numbers, which describe units of space
so basically 9 points on 9 mathematical units
which are mostly used to measure lengths of vectors
but in number theory to abstract parameter of amount
pls
so with amount come + - * /
mommy
just why
if (command.getName().equals("nuke")) {
yes
thats what breaks it
unless you get NumberFormatException
?paste
error?
?
switch(args.length) {
case 0 -> player.sendMessage("idk man");
case 1 -> {
int idk = Integer.parseInt(args[0]);
locationt.add(0, 10, 0);
Creeper creeper = world.spawn(locationt, Creeper.class);
creeper.setPowered(true);
creeper.setFuseTicks(0);
creeper.setExplosionRadius(idk);
creeper.setVisualFire(true);
}
case 2 -> {
// for two args
}
default -> player.sendMessage("idk man");
}```
why doesnt this work?
cancel it
event.setCancelled(true); + remove static + learn java
no need for static too
Or delay a tick
should work no?
?learnjava
Here are some links to get you started on learning Java:
- https://www.codecademy.com/learn/learn-java
- https://www.sololearn.com/learning/1068
- https://www.learnjavaonline.org/
- https://programmingbydoing.com/
- https://docs.oracle.com/javase/tutorial/java/index.html
The last one is the only official one, however some of those concepts assume that you already know a bit about programming.
still doesent work
?paste
why cancel?
what's the error
and one do you have one executor for multiple commands bro
that's so uncool
isn't it spawnEntity btw
not a World#spawn
and what is the resulting locationt
oh i see
um basically i see the error bro
i was told to use w.spawn bease it returns creeper so that i can set the prop[erties
spawnEntity does the same
your code is so extremly bad written so yeah it won't spawn the creeper
move your thing to case 2 -> {}
isnt there a spawnEntity method which takes an entity consumer?
that's real
you get args[0] without even checking if command has at least one argument
that's extremely dumb
thanks
i sent solution already
.
i am
in dms
very very helpfull!
iaght
gochaaaaaaaaa
i think i found out what i did wrong
i was putting the command in wrong
i was doing /muke adeptvail 10
when it was /nuke 10 adeptvail
time to ping 😅
you're lucky I just got ohme
is there a way that i can immediaatly have a creper explode on spawn
perfect timing xD
Grr paper does it in a different way
oh imillusion forgot to look at the vid you sent me this morning
I sent you something?
saw it on phone but my screen is too small to see much
whats even happening there?3
message about system chunk?
database storage with redis cache, displayed on a gui in real time
yeh
what do you mean?
the chunk build format may other, but the final format shouldn't be other
can u also setType with the block id?
glad its friendly
I know this but I don't understand buffer format
uhh wrong jdk version or whats the err?
I am now a Lombok user 🙏
you should use try or throws I think xD
is there any way to spawn shulker that is not snapped to the block grid? like every shulker spawns exactly like a normal block. but can i move it like 0.2 blocks to the side?
click on sleep and click alt+enter
any 1?
Why are you trying to sleep the thread...
cancel event
We already answered you
uhhhh this is so damn weird
isn't there a method explode() or prime() on creeper
this
aight i figured it out
nope there is a ignite()
I don't think you know what you're doing
because the block gets broken after that event was called. cancel it
?scheduling
Use the scheduler to delay things
Thread.sleep(2000);
no, my question is can u also setType with a block id?
if you programming for minecraft Thread.sleep(2000); can stop your server for 2s
block IDs were removed from bukkit in 1.13
oof
why would anyone use them? they've been deprecated since 8 years
well then check for playerInteractEvent
where player has BoneMeal in hand and clicks on grass or material of clicked block is tagged as Sappling or smth
basically what i wanted to do is make a random block spawn
.
then just get a random Material?
e.getClickedBlock()
how understand this?
is that a thing?
if event action is Action.RIGHT_CLICK_BLOCK
Material.values() returns a Material[]
private static final Material[] BLOCK_MATERIALS = Arrays.stream(Material.values())
.filter(Material::isBlock)
.toArray(Material[]::new);
public static Material getRandomBlock() {
return BLOCK_MATERIALS[ThreadLocalRandom.current().nextInt(BLOCK_MATERIALS.length)];
}
I read this website but my implementation palette give so many bags
well stated
you wanna filter for "isBlock" since e.g. you couldnt place a DIAMOND_PICKAXE
lmao me thinking about a pyramid growing
ahahaha
well maybe a bug
if it never counts your touch
what a stupid name if its for organic stuff
?scheduling
player.sendMessage("hi");
plugin.getServer().getScheduler().runTaskLater(plugin, () -> player.sendMessage("Bye-Bye"), 100L);```
i mean spigot bug
who to wait
not your server bug
try same on paper or smth
actually check isFromBonemeal()
player should dispatch a command?
or your server
NMS apparently has an IdMapper that converts integers -> BlockStates
?
might be that
Bukkit.broadcastMessage("Hi");
Bukkit.getScheduler().runTaskLater(plugin, () -> Bukkit.broadcastMessage("Bye-Bye"), 100L);```
I love how all my wireless devices are usb-c but charging like 7 different things once a month is painful
my earphones ran out of battery, so I plugged in the cable and now my keyboard is running low
grr
do you mean palette?
Yeah that's the block state registry / palette
well then it's a spigot bug
Anybody seen how insane Kademlia stuff is
Try using paper-api or run your plugin on paper server
class name? 😅
maybe paper has some event for the same purpose
actually, what is your spigot version?
Blocks
I know how read palette but good know how minecraft build it
do you have api-version: 1.19 in plugin.yml?
it breaks a lot of events sometimes if not set
alr alr
and your depend version is 1.19 too?
yeah
well strange
Try paper then
but my real problem is read blocks
and report as a bug
is there any way to make some boats or minecarts invisible? just some, not all of them. including texturepacks
if boat is an entity
boat.setInvisible()?
or it causes error
I really want to help but I honestly believe there are more capable people of doing it on the minecraft protocol discord
Guide to dependency injection: https://www.spigotmc.org/wiki/using-dependency-injection/
Bukkit.broadcastMessage("Hi");
Bukkit.getScheduler().runTaskLater(plugin, () -> Bukkit.broadcastMessage("Bye-Bye"), 100L);
easy
doesnt help with the plugin instance needed in the scheduler
di is insanely easy
learning java is insanely easy
neither of the above statements are true
often times, it's very annoying
hii
hi
easy is completely subjective
you are not the deciding factor on easy and hard
?di
Guide to dependency injection: https://www.spigotmc.org/wiki/using-dependency-injection/
yes i just tried, it causes error. CraftBoat cannot be cast to class org.bukkit.entity.LivingEntity
any other ways?
thanks, also how do u check if that material is a Block (not an item)?
Material#isBlock()
wdym?
isBlock returns only true for placable stuff, e.g. dirt, but false for stuff like pickaxes
whut
isBlock doesnt exist
it's called isBlock() and you cannot call it on Material
you have to call it on a specific material object
-_-
Material.DIRT.isBlock()
oh
kk ty!
btw, you should rather create a Material[] out of all "isBlock" materials during startup, since values() will always return a new array, which is quite expensive since the Material class has so many values
you could basically copy / paste the method I sent earlier
^
this stores all "block" materials when the class gets loaded, then you can just do getRandomBlock() every time you need a random block material
also how to check if you can break that block in survival (for example not an end portal frame)
well then packets
how do you cast your boat
show the code
I think that requires NMS
boats are not livingentities
Boats are Vehicles, Vehicles are Entities
LivingEntities are entities that can have health, and/or equipment, and stuff
to check if a block can be broken, get the NMS Block (CraftMagicNumbers#getBlock(Material)), then get the block's BlockStateBase, which has a public float "destroySpeed". If that's below 0, then it's unbreakable
alternatively, and would probably also work: check if the Material's getBlastResistence is > 1200
seems like that covers all cases and doesnt need NMS
Material#getHardness
oh yeah that does exactly the same
either check if getBlastResistence is > 1200 or if getHardness is -1
I can’t believe that’s all done with a switch and not taken from NMS
yeah the whole material class is very weird
it's also weird that we have one material class that combines the NMS Blocks and Items class
e.g. in NMS, there is a Dirt "Item" and a Dirt "Block", both declared in "Items" and "Blocks" class
in bukkit, both are just Material.DIRT
and if we're talking about mfnalex's dirt we can always talk about the fact that he shot my dog because I for programming help
I think that's the weirdest dirt of them all
magma you do far worse things
yeah but I don't allow other people to criticize my actions
you do allow me occasionally
what I do is between me and my god and he can come down and fight me if he has issues with what I'm doing
and after 2 weeks of persistence you make your own solution based on my suggestions
fuck me I guess I'm your god
mfnalex shoots magmaguy's dog, 2020, colorized
naaaah make it 2020
I didnt join this discord until 2020
or maybe it's just a timezone issue
the only solution I made based on your suggestions was printing them all in my rolls in toilet paper so I can dispose of them properly
my innovative solutions only needed one enum field
and I only spent 5 days debugging it
and 4 days rewriting it
stop watching too much kingsman
it's from the german movie "Look who's back" lol
i can tell, its hitler. The jokes refering to the dog shooting
I'm going to john wick mfnalex's whole life
you better stay on your toes and make sure there are no pencils within arms length of you at all times
constantly be spinning in a circle with your arms out
that's already what he spends his days doing anyway
accurate
are you friends with will smith
how do you convert a material to an itemstack?
you create an itemstack using the material
new ItemStack
doesnt work
We can't take it from NMS unless we routed it through UnsafeValues, which we tend to avoid at all costs
new ItemStack
So our alternative is to hardcode in those values and test them in CraftBukkit to make sure they're accurate
oh
That's not creating an item stack 🙃
Mr. Choco, bring me money
approve my plugin for a $5 fee

Choco gets bribe money, 2021, colorized
I'd do it for 49k
but you don't have perms to approve plugins
give me 49k and trust me it will get on there
is it tax deductible?
sure
okay I'll message you when something doesnt get approved
but I'm not including taxes
fun fact: the longest I ever had to wait for approval was for a free resource
Pain
I'm going mad, I cannot figure it out how to get the already existing scoreboard created in game.
A dummy one, not the mainScoreboard, my scoreboard already exists, has been created in game with /scoreboard objectives add test
how do u filter it so its not air
Or you can just be old fashioned as hell and just check if it's not air
If m != Material.Air
Idk how jdk internals work sadge
Olivo just sent the solution
^
We all wish that worked
ye
alr i tried
The solution is to create a method that accepts a predicate and negates it
It's a one liner
Or Predicates.not as Olivos suggested 😂
Which is what Predicate.not does
Predicate.not* (just checked)
I didn't read the chat above
Not necessarily, the static not method doesn't appear in java 8 which is still worldwidely used
So Predicates.not is still mostly used
.filter(mat -> !mat.isAir())
cave air
Too complex
i already did this and it worked
Oh boy all of my 1.17.1+ projects are broken
Do a static import!!
no
No
ew
Then your code is beautiful
static imports are weird
not even the only kind of air either
??? static imports were invented exactly for this, for example Collectors.toList
Why has it always worked for me then wtf
I'd only use static imports when I use this method thousands of times
I only use static imports to annoy illusion
usually you want to know which class declares a method
Clarity!