#help-development

1 messages · Page 687 of 1

lost matrix
#

Dont shade it

strong parcel
#

Is there a ?shade

lost matrix
#

add

<scope>provided</scope>

To your dependency

#

*If you are using maven

strong parcel
#

I am

#

you are right, it's missing provided

lost matrix
#

Btw i would highly recommend not using public fields.
And never make lists, sets, maps or other collections public and/or static.

strong parcel
#

So if I want a modifiable hashmap that I can access from any file, I should make a getter?

lost matrix
#

Nope. Never create getter or setter for collections (lists, sets, maps etc).

strong parcel
#

I draw my code with crayons. What's the best way to accomplish that?

smoky oak
#

I've noticed that InventoryEvent doesnt contain all events that can cause changes to a player's inventory (of course...), is there a list of events that can change inventories that aren't an InventoryEvent? Currently I'm aware of the pickup event, and the item drop event

echo basalt
#

If you do need to expose a getter, make sure it returns an immutable copy

lost matrix
# strong parcel I draw my code with crayons. What's the best way to accomplish that?
public class PlayerDataManager {
  
  private final Map<UUID, PlayerData> playerDataMap;
  
  public PlayerDataManager() {
    this.playerDataMap = new HashMap<>();
  }
  
  public PlayerData getPlayerData(UUID playerId) {
    return this.playerDataMap.get(playerId);
  }
  
  public PlayerData removePlayerData(UUID playerId) {
    return this.playerDataMap.remove(playerId);
  }
  
  ... and so on
#

And like illusion said:

  public List<UUID> getLoadedPlayers() {
    return List.copyOf(this.playerDataMap.keySet());
  }

If you need bulk content

echo basalt
#

ImmutableList.copyOf

lost matrix
#

^ no

strong parcel
#

So this.playerDataMap.remove(playerId) would modify the HashMap and then return it, or just return a modified copy?

echo basalt
#

Collections.unmodifiableList

#

I'm sleepy

lost matrix
#

List.copyOf already returns an immutable list

echo basalt
#

True

lost matrix
echo basalt
#

Encapsulating the real map

#

All operations regarding that content go through your class ensuring you have full control

strong parcel
#

So it returns a PlayerDataManager?

echo basalt
#

Just make it a void or return the operation's return type

remote swallow
#

no it returns player data

strong parcel
#

Oh, I got the playerData object confused with the Map.

smoky oak
#

?????
Sooo
InventoryEvent: PLAYER related inventory event
Why the fuck is InventoryCloseEvent#getPlayer() returning a HumanEntity instane

shadow night
#

Ah yes

strong parcel
#

A player is a human entity

smoky oak
#

well

#

yes but

#

thats not what getPlayer is supposed to do

echo basalt
#

something about nms

#

and legacy

strong parcel
#

Maybe it's not 100% sure it's a player so you have to check.

echo basalt
#

that method was introduced years ago because it matched nms behavior and is only kept due to compability iirc

echo basalt
strong parcel
#

🤦‍♂️

#

It's okay 🖍️

#

I'll be over here with the crayons

strong parcel
main swift
#

Does anybody know how to set up a development Environment for plugins

smoky oak
#

iirc its in the pins

#

wait wrong server

#

theres a spigot blog about it tho

quiet ice
#

I'm impressed someone actually remade the old screenshots that were formerly from Win XP and Win 7

tender shard
smoky oak
#

i didnt actually read it what do you take me for

quiet ice
#

Actually apparently not. Noone edited the page that much after me back in 2021

smoky oak
#

i did a three second google search

quiet ice
#

I should update it again given that J17 is the norm nowadays

smoky oak
#

eh most of my code is still java 8 compliant

#

mostly cuz the 1 thing i know of is newer is the if(object instanceof Class object2) adds 'depth'

#

i usually do a if not return type of clause

tender shard
#

works fine too

smoky oak
#

i find it is easier to read 🤷

tender shard
#
if(!(sender instanceof Player player)) return;

player.getLocation(); // works!
remote swallow
#

does it

tender shard
#

does

orchid trout
#

java 17

remote swallow
#

i thought you need brackets for that

smoky oak
#

how the f

quiet ice
#

Yeah pretty sure the scope of player is limited to the if statement

smoky oak
#

doesnt the if create a 'deeper' layer

#

whats it called

#

definition space

tender shard
#

works fine

quiet ice
#

Although uh given the absence of the {}it could also not be the case whatever

smoky oak
#

huh

#

does it work with multiple lines in a code block?

quiet ice
#

Yeah then it is a quirk caused by {} not being a thing

tender shard
smoky oak
#

no i meant

#

if you have to do some logic before calling return

tender shard
quiet ice
#

In that case it does not work

smoky oak
#

yea exactly like that

quiet ice
#

WHAT

smoky oak
#

interesting

quiet ice
#

Is this eclipse compiler on steriods?

smoky oak
#

whats that half life symbol

quiet ice
#

Lambda?

smoky oak
#

ah

#

lambda in a circle is half life

#

right

#

its not like valve removed greece

tender shard
smoky oak
#

hm

#

oh on the topic of overriding

#

I've got a interface that has some methods that are there as hooks but rarely get used so i used empty method bodies instead of abstract

#

if i type @Override it only shows the abstract methods

#

is there some setting to display the empty method body methods as well?

tender shard
#

If you have an interface like this, and then you create a new class:
... (1 sec)

#

and then you click this, yeah then it only adds the non default methods

#

buuuut

smoky oak
#

correction, I've done an abstract class, but apparantly its the same result

tender shard
#

type @Over... and click "Override or Implement"

#

then it lets you choose which one to "generate"

smoky oak
#

i see

#

thanks

green plaza
#

@onyx fjord did u called mojang?

#

I am waiting for sue papers

#

For stealing code

#

XD

tender shard
# smoky oak thanks

np. for interfaces, the quick fix would already give you the option for all methods, but apparently for abstract classes you#re right, there it only shows the actual abstract methods and you have to type Override manually again to make it add the other ones

smoky oak
#

eh, my MO is alt enter enter anyways lol

tender shard
smoky oak
#

i asked mostly cuz i always forget the method names and have to open the superclass lol

onyx fjord
#

if you are wondering how it works ask paper

green plaza
onyx fjord
#

@ancient plank

green plaza
#

Omfg XD

onyx fjord
#

youre just getting annoying

#

you are pinging me for no reason

ancient plank
#

wub is goin

green plaza
#

You thretened me yesterday so i am just asking how its going

onyx fjord
#

thretened with what???

lilac dagger
#

Mods?

ancient plank
#

ey buddy don't harass & insult ppl @green plaza

green plaza
tender shard
#

Can you please do your childish discussion in #general

#

Or in DMs

green plaza
#

I didn't

onyx fjord
#

then send proof

#

bye

#

dont ping me ever again

tender shard
#

Why dont you guys just block each other

green plaza
#

Here

agile hollow
#

how can i implement vault in my plugin?

onyx fjord
#

and that is a threat? ...

tender shard
green plaza
lilac dagger
#

Mojang won't dmca mods lol

agile hollow
#

can u link it

tender shard
#

Google vault GitHub

agile hollow
#

i find only the milkvowl

tender shard
#

Thats correct

agile hollow
#

ye but i didn't understand what to do

#

because i put the rep and the dep

tender shard
#

ok letme explain

green plaza
agile hollow
#

thx that is my first time i try to implement api

tender shard
#

what do you wanna do? hook into vault, to e.g. query another permission or economy plugin, or do you want to write your own pemrission / economy plugin that allows other plugins to hook into your plugin using vault?

onyx fjord
green plaza
agile hollow
#

i want to do a custom economy and i want to allow lp to hook into my plugin

tender shard
#

pls can someone timeout or kick them if they keep talking about their lawsuits in help-dev

ancient plank
#

@onyx fjord stop interacting with them, and @green plaza you were told this isn't the chat for this discussion

tender shard
agile hollow
#

maven

tender shard
#

did you already add the dependency?

agile hollow
tender shard
#

yeah do that quickly pls

agile hollow
#

added the repository and dependency

#

done

tender shard
#

ok now you create a class that implements Economy

import net.milkbowl.vault.economy.Economy;

public class MyEconomy implements Economy {
}
#

your IDE will now complain that you must implement all the methods from vault

#

you will have to implement all these methods

#

after that you can register your Economy class to the bukkit economy provider, in onLoad or onEnable:

Bukkit.getServicesManager().register(Economy.class, new MyEconomy(), myPlugin, ServicePriority.Normal);
#

now you're done!

agile hollow
#

it show me that

#

that my code

river oracle
#

you can't implement a Class

tender shard
#

did you click the maven reload button after adding the dependency?

tender shard
rare rover
agile hollow
river oracle
#

why's it say class then lol

#

IntelliJ wack?

agile hollow
tender shard
agile hollow
#

that is all my screen

agile hollow
tender shard
agile hollow
#

ok implemented all the methods

tender shard
#

as said, now you register it in onEnable (or better in onLoad if that works)

agile hollow
smoky oak
#

dunno if it was you alex or 7smile7 (think it was smile), but Operation doesn't have a multiply option for some reason?
Actually how is ADD_SCALAR different from ADD_NUMBER if they both add to baseValue?

agile hollow
agile hollow
tender shard
agile hollow
tender shard
#

the file name is called MyEconomy too?

quaint mantle
tender shard
agile hollow
#

ok fixed

#

i think

tender shard
agile hollow
tender shard
#

yeah that's it

#

now ofc you still gotta add all the logic lmao

agile hollow
agile hollow
tender shard
#

what do you mean? you said you wanted to write an economy plugin

#

well so now implement all the methods that vault needs

lost matrix
quaint mantle
#

Interface not gonna magically implement itself. :)

agile hollow
tender shard
#

dude they are in your MyEconomy class

smoky oak
#

description's fucked too apparantly

tender shard
#

you have like 50 empty methods there

#

now fill them with actual logic

#

the name and parameters will tell you what those methods are supposed to do

agile hollow
#

and what i have to add in it?

tender shard
#

are you sure you want to write your own economy plugin?

worldly ingot
#

Whatever it is you need to do to implement your own economy

tender shard
#

the method names are self explanatory

#

withdraw(...) must withdraw a certain amount from a certain player, etc

smoky oak
#

oh wait

#

its the base

#

which isnt affected by the item held

#

uuuuuuuuuurgh

agile hollow
smoky oak
#

seriously why does nothing of this stick

#

why does the game eat the modification i make to the damn values

quaint mantle
worldly ingot
#

I don't think you should be making your own economy right now

quaint mantle
#

Store player's balance & modify

tender shard
worldly ingot
#

btw is this copy button new?

tender shard
#

so manipulate and/or query your database/file/whatever you use to provide all the features that vault wants to have

worldly ingot
#

If so, it's handy

tender shard
#

seems new yeah

#

havent seen it before you sent it

remote swallow
pseudo hazel
#

I dont remember that copy button so must be pretty new

onyx fjord
#

huge feature

smoky oak
#

discord adds lots of stuff without telling anyone

#

i know for example this server has 10 roles

pseudo hazel
#

webdev be like

quaint mantle
pseudo hazel
#

you dont have to tell anyone if you can just update it without anyone ever realising it

lost matrix
#

One thing i have always been missing in vault is a separation between sync and async requests in the Economy interface.
You can either implement it to always be async (Which will break a ton of plugins) or always be sync (which means you
pretty much need to keep all balances loaded)

worldly ingot
#

Agreed. Still wanting to add economy service interfaces to Bukkit

#

One for sync, one for async

#

The problem would be that plugins actually have to implement it :P

lilac dagger
#

That would be godly ^

lost matrix
#
public CompletableFuture<Double> getBalanceAsync(OfflinePlayer player);

would be nice for example.

lilac dagger
#

I can implement it just fine

worldly ingot
#

I'd prefer separating it out into multiple interfaces imo

smoky oak
#

<@&690697121761853491> hmmmmmmm did that ping work

worldly ingot
#

Economy and AsyncEconomy

lilac dagger
#

I'd be the first to

onyx fjord
worldly ingot
#

It didn't

onyx fjord
#

oh true

#

doesnt show in autocompelte

smoky oak
#

i mean it has the right color

pseudo hazel
#

you can type it

onyx fjord
#

only those in tab completion are pingable

tender shard
#

ok guys wish me luck !!!!!

pseudo hazel
#

but it does not send a notif

onyx fjord
#

@everyone 🧌

smoky oak
#

ah i see

#

curious

lost matrix
#

Vault is just way too deeply rooted in the spigot eco system sadly. Not sure if
a competitor would have a great time. (Unless he bridges to vault for easier migration).

lilac dagger
#

Kotlin and gradle

onyx fjord
#

vault has some flaws

quaint mantle
#

@everyone Help me with my server pls its -0 tps pls

onyx fjord
#

you cant have multiple economy currencies

worldly ingot
smoky oak
worldly ingot
#

I do have a branch with an economy interface setup already

#

I just never really finished it all or PR'd it. Still exists though

onyx fjord
#

if such service existed it should have a way for plugins to register custom currency

pseudo hazel
#

yeah inc conversion rates

worldly ingot
#

😊

worldly ingot
#

I just need to finish it tbh

tender shard
#

does anybody know why every spigot version uses R0.1

worldly ingot
#

Probably just some old convention

smoky oak
tender shard
#

was there ever an R0.2 or R1.0

tender shard
worldly ingot
#

Don't believe so. Not in the API

tender shard
#

you probably mean the craftbukkit package name @smoky oak

smoky oak
#

why the hell did that ping me

#

i was in this chat

#

yea sounds about right

tender shard
#

like org.bukkit.craftbukkit.v1_18_R2

lost matrix
tender shard
smoky oak
#

ah
piece of advice dont have discord open twice lol

worldly ingot
smoky oak
#

hm, choco? Have you ever worked with attributes?

#

or specifically with their internal code? asking cuz on your profile it says bukkit contributer

worldly ingot
#

I took a bit of inspiration from Sponge's economy services

#

Because they do have some native ones

worldly ingot
smoky oak
#

well

#

apparantly no matter what modification i make to the GENERIC_ATTACK_SPEED attribute on a player, it gets ignored and the normal attack speed applied

#

I add some value, and it is like Attribute#getValue is like 1.6, but the actual attack speed is like 0.6

#

im using a axe to test this so i can really see the difference

#

its just

#

the getValue is supposed to apply after all modifiers, including the TOOL modifier

#

so why is it still reduced back down to 0.6 when the value its supposed to be is 1.6?

lunar wigeon
#
if (!user.getRank() == "VIP") {
  player.sendMessage(ChatColor.RED + " You can't use this command!");
  return;
}

why it doesnt work? I've tried literally everything

worldly ingot
#

.equals() to compare strings, not ==

lunar wigeon
#

why not ==

smoky oak
#

== checks if two things are the same object in memory

quaint mantle
undone axleBOT
worldly ingot
slender elbow
#

||.intern() ==|| :^)

pseudo hazel
#

because "VIP" creates a new object on stack and does not use the existing string from memory

tender shard
#

what's the easiest way to get sth like ${project.version} in plugin.yml working, but in gradle?

remote swallow
#

groovy?

lunar wigeon
#

but I also use == for int's and it works then

worldly ingot
#

They have resource replacements or something like that

tender shard
slender elbow
#

processRersources task

worldly ingot
#

Yeah that thing

pseudo hazel
#

unload project, set it up with maven, reload project

remote swallow
smoky oak
worldly ingot
lilac dagger
worldly ingot
#

Strings are not primitives

remote swallow
#
processResources {
    def props = [version: version]
    inputs.properties props
    filteringCharset 'UTF-8'
    filesMatching('plugin.yml') {
        expand props
    }
}
#

version: '${version}'

#

in plugin.yml

tender shard
tender shard
remote swallow
tender shard
#

isn't that possible without that redundancy

remote swallow
#

no clue

#

thats just how i do it

tender shard
#

I'm looking for the easiest way

remote swallow
#

mincrell plugin-yml

tender shard
#

well not the easiest to get it done, but the "most clean" way to do it properly

remote swallow
slender elbow
#

i mean you can defo just do

processResources {
    inputs.property('version', project.version)
    filteringCharset 'UTF-8'
    filesMatching('plugin.yml') {
        expand(['version': project.version])
    }
}
tender shard
slender elbow
#

erm

tender shard
#

and then @version@ or ${version} ?

quaint mantle
remote swallow
#

${version}

tender shard
remote swallow
#

cant wait for whats coming

#

who wants popcorn

lilac dagger
#

Not banning defuu a long time ago was the mistake

tender shard
tender shard
lunar wigeon
tender shard
remote swallow
#

i saw it the other time but nothing happened

quaint mantle
#

fucking german people

slender elbow
#

kinky

tender shard
lost matrix
quaint mantle
#

why are abusing me, because I am black

#

???

tender shard
#

do we have to ping the mods again

remote swallow
smoky oak
#
    private void setSpeed(double targetSpeed){
        //reset
        nullSpeed();
        //calc
        double currentSpeed = speedAttribute.getValue();
        double applyValue = targetSpeed - currentSpeed;
        speedModifier = new AttributeModifier(
                "GGP|ARES|Axe",
                applyValue,
                AttributeModifier.Operation.ADD_NUMBER);
        speedAttribute.addModifier(speedModifier);
        player.sendMessage("TargetSpeed: "+targetSpeed+", speed is "+
                player.getAttribute(Attribute.GENERIC_ATTACK_SPEED).getValue());
    }
#

but its still slow

lunar wigeon
remote swallow
lunar wigeon
remote swallow
tender shard
#

can you guys please continue the discussion about my sexuality in #general instead of here please, thank you

#

I'm trying to learn kotlin

quaint mantle
#

xddd

#

omg

#

lgbt + kotlin

#

im leaving

#

bye

remote swallow
#

bye

lunar wigeon
remote swallow
#

we totally enjoyed having you here

agile hollow
#

how can i make a combat system?

smoky oak
#

are you freakin kidding me
switching from a sword to an axe doesnt trigger the PlayerItemHeldEvent ????????

river oracle
remote swallow
lunar wigeon
lost matrix
river oracle
#

me!!!!

lunar wigeon
river oracle
#

I write gradle groovy :P

remote swallow
tender shard
quaint mantle
agile hollow
quaint mantle
#

Human

river oracle
remote swallow
agile hollow
remote swallow
#

?learnjava

undone axleBOT
quaint mantle
river oracle
remote swallow
#

you write a plugin in cobal?

river oracle
#

no you can write some intermediary for them to communicat ethouhg

river oracle
lunar wigeon
remote swallow
#

rewriting the wheel isnt very smart

sonic cosmos
#

Why?

remote swallow
smoky oak
#

Tag.ITEMS_AXES.isTagged(player.getInventory().getItemInMainHand().getType())
this is false if you're switching from a not axe item to an axe item -.-

quaint mantle
#

"fuck german people"

lost matrix
lunar wigeon
#

this server is so racist

smoky oak
#

alex is german and allowed to stay

#

i dont see the problem

remote swallow
worldly ingot
#

?kick @quaint mantle stop being cringe

undone axleBOT
#

Done. That felt good.

glad prawn
lost matrix
quaint mantle
#

hello im black

onyx fjord
#

is there event that triggers when any entity moves?

what i need is to give an effect to all entities that enter certain area

lilac dagger
#

Kick feritz too

lunar wigeon
#

what the fuck did I do wrong??

lilac dagger
#

Because you associate with the other guy

quaint mantle
#

Skript is the best programming languagr

river oracle
remote swallow
#

didnt you just say "this server is so racist"

river oracle
#

could be wrong thuogh

onyx fjord
#

no paper

lunar wigeon
smoky oak
river oracle
lunar wigeon
quaint mantle
#

this discord is so racist

remote swallow
#

nothing racist was going on?

lost matrix
lunar wigeon
remote swallow
#

@worldly ingot can you bonk them

river oracle
onyx fjord
lilac dagger
#

These guys don't even know what racism is

lunar wigeon
remote swallow
remote swallow
lunar wigeon
remote swallow
#

bc ur trolls

smoky oak
#

this is cursed Bukkit.getScheduler().runTaskLater( Echo.getInstance(), () -> Echo.getInstance().getPlayerHandler(player).itemChangeEvent(), 1);

lost matrix
smoky oak
#

?

#

is there a delay inbuilt?

worldly ingot
#

@quaint mantle timing you out for an hour and if I have to come back in here and tell you to knock it off again I'll just ban you instead

tender shard
#

does anybody know what Permission#getName() is supposed to return? (I'm talking about Vault's Permission class, the one I have to implement for a custom permissions plugin - NOT about a regular "Permission")

worldly ingot
#

iirc the permission name is just the permission node itself

tender shard
lost matrix
#

Scheduling a task will result in the task being executed on the next tick earliest.

tender shard
#

the Permission class methods like playerHas(String world, String player, String permission) etc, or isEnabled() etc - the "Permission" class is the whole API itself, not a single perm

lost matrix
#

Wait that doesnt sound right. Some native pls correct what i just said.

worldly ingot
#

Best thing to do is look at default implementations from Vault

river oracle
tender shard
#

probably I should return my plugins name there I guess

#

I'll take a looka t luckperms code

worldly ingot
#

There's a Vault-API repo and a Vault repo, the latter of which has default implementations for popular plugins

tender shard
#

oh ok I'll try to find that, thx

lost matrix
#

Let me rephrase it.
The earliest point in time, where a scheduled task will be executed, is the next tick.

lunar wigeon
lost matrix
smoky oak
# lost matrix Elaborate

i tried it, it doesn't run next tick, but the same tick, causing the issue where it doesnt recognize it

lost matrix
#

What version are you on?

smoky oak
#

1.20

slender elbow
#

it is queued for the next tick

smoky oak
#

?

slender elbow
#

that has always been the case

smoky oak
#

must be some hidden issue then

lost matrix
#

Since when are scheduled tasks executed immediately.

smoky oak
#

quick question

echo basalt
#

They're not

smoky oak
#

does attacking reset attributes?

lost matrix
lost matrix
golden wren
#

is it possible to create an inventory gui that is in the form of a dropper/dispenser (the 3x3 grid)?

golden wren
#

how do i do it

echo basalt
#

Internally there's a min tick requirement of 1

lost matrix
echo basalt
#

Like if you set the delay to 0 it just sets it to 1

smoky oak
#

oh

golden wren
smoky oak
#

the 1 tick delay isnt enough

#

if i switch from axe to axe its the speed i set it to

#

if i switch sword-> axe its the slow axe speed

#

weird

golden wren
echo basalt
#

only inventories that rely on nms are like the weird tile entity ones

#

Like crafting tables

#

unless that's been fixed in the later versions

agile hollow
#

why it didn't cancel the interaction with the item in the gui?

    public void onInvetoryClick(InventoryClickEvent event) {
        if (!event.getView().getTitle().equals(invName)) {
            return;
        }
        event.setCancelled(true);
    }```
quaint mantle
remote swallow
#

no

#

dont use holder

#

compare view instances

echo basalt
#

wait discord finally added the link feature?

smoky oak
#

alright, now it's still saying the speed is set to 1.6 but the meter isn't loading at all???

quaint mantle
#

Yup

echo basalt
#
#

ye

quaint mantle
#

W update

remote swallow
quaint mantle
remote swallow
#

still shouldnt be used

#

compare view instances

smoky oak
#

ADSASEAAAAAAARGH
so I'm switching to a new item, but my attack speed is still the speed of the old item slot, I'm so effing done
at least i figured out a different angle to this issue
but why does switching between two axes of the same material not count as switching items? doesnt happen anymore; no idea why

#

why the F does it take 2 ticks for the attack speed attribute to change? this game, man...

tender shard
#

when you're confused why all your tests passed so you add this and are happy when it fails lol

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class TestTest {

    @Test
    public void testTest() {
        Assertions.assertFalse(true);
    }
}
worldly ingot
#

Ah yes. The classic test test

smoky oak
#

im confused. I have two events. One, on leave, unregisters handlers. The other, on inventory close, calls a method in the handler to properly update it
apparantly a player leaving the server calls PlayerQuitEvent, THEN InventoryCloseEvent? Where's the logic behind that?

tender shard
#

no

#

craftbukkit code says otherwise

#

you sure you didnt do sth wrong?

#

green is calling InventoryCloseEvent, red is obviously PlayerQuitEvent

#

(that's PlayerList class)

smoky oak
#

thats... odd

#

I had a similar thought so i added print outs to the start of my events

#

theyre not getting printed

#

-.-

#

the logger stopped updating itself

#

fuck windows man

#

also now im sure

#

it tells me the leave is called before the close

#

which means the handler isnt registered anymore

tender shard
#

are you doing any tasks or similar stuff?

smoky oak
#

exception

#

i am but i dont know if this could be the issue

#

ah

tender shard
#
@EventHandler
public void onClose(InventoryCloseEvent event) {
  System.out.println("close");
}

@EventHandler
public void onQuit(PlayerQuitEvent event) {
  System.out.println("quit");
}

If you only do this, I am sure it prints close before quit

smoky oak
#

the reference is probs getting deleted

#

thats the explanation for the exception

#

but why are the events out of order? I'm printing them first thing in the call

#

hm well

#

@tender shard

the return value of "io.github.moterius.GreekGodsPlugin.Echo.getPlayerHandler(org.bukkit.entity.Player)" is null

Which means its no longer registered. The handlers get unregistered in the Quit event. I made sure to do
if(!runnable.isCancelled()) runnable.cancel() for the only runnable in the code

#

the issue is the quit event running before the inventoryclose event im about 95% certain

smoky oak
#

basicylly yes

tender shard
#

wdym with "basically" 😄

smoky oak
#

@EventHandler
public void onClose(InventoryCloseEvent event){
Echo.getInstance().getLogger().info("Close event");

tender shard
#

are you manually messing with EventHandlers, e.g. unregistering them with the plugin handler or sth?

smoky oak
#

no

#

theyre just out of order

#

for

#

SOME reason

tender shard
#

ok in both events, print out the stacktrace, lets see where your events actually get called from

@EventHandler
public void onQuit(PlayerQuitEvent event) {
  new LinkageError().printStacktrace();
}

same for close event

#

then let's check the stacktraces

smoky oak
#

doesnt seem to change much

#

just a longer stacktrace

quaint mantle
#
@EventHandler
public void onQuit(PlayerQuitEvent event) {
  event.setCanceled(true);
}

When

smoky oak
#

ykw mfn ill just print out the timeNanos to make sure one actually runs before the other

#

brb

remote swallow
smoky oak
#

that theres copied from the message above

remote swallow
#

oh i only saw the one

#

kek

tender shard
#

I need both stacktraces in full

smoky oak
#

that are the full traces

#

of the thing you posted at least

tender shard
#

oh I didnt see the text above

#

mb

#

one sec

smoky oak
#

btw heres timeNanos

[23:07:29] [Server thread/INFO]: [GreekGodsPlugin] TIME IS 78935914425700
[23:07:29] [Server thread/WARN]: java.lang.LinkageError
[23:07:29] [Server thread/WARN]:        at io.github.moterius.GreekGodsPlugin.Event.Handlers.EventPlayerLeave.onLeave(EventPlayerLeave.java:14)
...
[23:07:29] [Server thread/INFO]: [GreekGodsPlugin] TIME IS 78935998247700
#

so yes the first one runs before the other

#

its not just a display error

tender shard
#

in your server software, leave event is called in PlayerList line 528 and the close event is fired in PlayerList line 548

#

what's your /version ?

smoky oak
#

1.20 something

tender shard
#

/version

smoky oak
tender shard
#

ok let me check out that commit

smoky oak
#

oh the actual internals

#

nvm

tender shard
#

gotta run buildtools, it's hella slow on my windows pc 🥲

smoky oak
#

if i knew how to build for a certain checkout I'd do it for you, i have a 4.2GHZ core

#

quick explanation?

#

or well the command line commands?

tender shard
#

does the player have their own inventory open?

#

because in that case, the InventoryCloseEvent is indeed only called later

smoky oak
#

well not that im aware of

#

its not a kick

#

its the escape menu disconnect button

#

this is me on a local test server losing my mind

tender shard
#

first two things, as expected - normal close event, then quit event. But the third part I marked, that also checks for open inventories again and calls a close event, one second

smoky oak
#

can i differentiate those two? If i just stop the second one it shouldnt cause any data related issues

tender shard
#

are you by any chance opening an inventory between those two events again? because both checks are doing containerMenu != inventoryMenu

smoky oak
#

I'm noticing theyre calling different methods

#

not with my code and theres no other plugins

#

all im doing is escape -> disconnect

marble cedar
#

hey, can someone tell me how i can use the path parameter in the getConfig.getString() member to access these?

webhooks:
  leave:
  join:
  break:
  kill:
tender shard
#

@worldly ingot

#

do you know anything about this?

#

it says this was fixed but apparently it wasnt?

worldly ingot
#

I recall it getting fixed in a commit a long while ago I believe

marble cedar
tender shard
smoky oak
#

?stash

undone axleBOT
worldly ingot
#

That commit was 1.16

remote swallow
#

choco has every git commit memorised

tender shard
#

WorldServer#removePlayerImmediately in PlayerList#remove still calls the close event

#

after the quitevent was called

smoky oak
#

not to interrupt, but I'm trying to find the class in the stash but there's no net.minecraft. Is it not in that one?

remote swallow
#

its patches

smoky oak
#

k

tender shard
smoky oak
#

i cant figure out the stash lol

remote swallow
#

which bit

tender shard
#

run buildtools for 1.20.1, then just do git checkout -b blabla 8ef7afe in the craftbukkit folder, then open the craftbukkit folder in IJ

#

then you have the code from your spigot version

worldly ingot
smoky oak
#

also wouldnt that still be there?

#

i havent run buildtools again so im assuing its still like that

tender shard
#

yeah if that's the latest version you built, then you don't need to checkout

remote swallow
smoky oak
#

yea i just build and copy the server file

tender shard
#

then just open craftbukkit folder in IJ as maven project

#

then head to PlayerList, lines 400ff roughly

#

line 500 is where remove(EntityPlayer) should start

smoky oak
#

yea once its loaded lol

remote swallow
#

CraftBukkit was almost called CraftBucket

tender shard
#

it calls the close event in line 508, then quit event in 511, then close event in 532 although that shouldnt do it as because the inv should have already got closed before obv

smoky oak
#

it just said 'syncing' and i think it changed lol

tender shard
#

there's also "SPIGOT-924" mentioned in the method but I cannt find that on jira

#

i really have no clue why it calls that event twice

smoky oak
tender shard
#

PlayerList line 532 -> Ctrl+B into worldserver.removePlayerImmediately -> WorldServer line 1094 -> Ctrl+B into entityplayer.remove( -> EntityHuman#remove(RemovalReason)

smoky oak
#

huh your keybinds are different, its on f4 for me. thanks

tender shard
#

Ctrl+B is the default

#

oh F4 does the same

#

i guess default allows both? lol

remote swallow
#

mine is setup for control click kekw

tender shard
#

yeah that works too for me lol

#

now I have 3 methods of doing it

#

middle click too!

remote swallow
#

i prefer ctrl click bc its easier

smoky oak
#

hm

tender shard
#

Ctr+B, F4, Middle-CLick, and Ctrl+Click all the same lmao

smoky oak
#

I've looked at the methods, and i dont think there's anything different that could be used to differentiate the two close calls

#

i hoped i could use that one is using closeContainer and the other doCloseContainer but i dont think i can detect that with just the spigot api

remote swallow
#

call the close event stuff at start of quit

#

and add a catch case

smoky oak
#

bah much simpler solution

#

my cache contains a UUID -> enum map

#

i can check the map's keyset i think

remote swallow
#

for wat

smoky oak
#

still really frustrating i have to do it this way

#

the event still contains a player reference

#

hopefully

#

imma test it

remote swallow
#

otherclass.handleCloseEvent(); // this goes at the start of quit and inside close event


public void handleCloseEvent() {
    // do stuff
}
#

you just add a close catch, if something is missing dont do anything

tender shard
#

yeah sure but don't you wonder where this issue comes from

remote swallow
#

not really

tender shard
#

i do

remote swallow
#

oh no it happens, cant do much about it

smoky oak
#

actually why the second call in the first place? there's no check if anything's open in the first place

#

also i was right, the player reference in the event after doCloseContainer isnt stale yet

#

so if(map.queryPlayer(player.uuid)) == null) return fixes this

#

dumb it happened in the first place but eh

quaint mantle
#

Which is an instance of Rail
BlockData or BlockState?

BlockState state = start.getState();
        BlockData data = start.getBlockData();

        if (data instanceof Rail) {
            Rail rail = (Rail) data;
            Rail.Shape shape = rail.getShape();

            
        }
remote swallow
#

data

quaint mantle
#

Too lazy to test

quaint mantle
remote swallow
quaint mantle
#

What's the difference btw?
I know you can use BlockState for furnace for example, but what does it differ from BlockData and why is Rail used with BlockData instead of BlockState?

smoky oak
#

isnt blockState for NBT stuff and blockData for stuff like rail direction, water log etc?

remote swallow
#

yeah

quaint mantle
#

Oh, talking about rail direction;
How do I obtain a rail "neighbour"? 😂

remote swallow
#

get the shape, figoure out which way then get the next block

smoky oak
#

block.getNeighbor(Direction.NORTH), replace direction with the pointy ends you get from the rail

quaint mantle
#

You cannot cast or obtain a BlockFace from Rail.Shape

#

As Rail.Shape contains Z,X specific indexes

smoky oak
#

huh

tender shard
#

Represents a captured state of a block, which will not change automatically.
Unlike Block, which only one object can exist per coordinate, BlockState can exist multiple times for any given Block. Note that another plugin may change the state of the block and you will not know, or they may change the block to another type entirely, causing your BlockState to become invalid.
basically a BlockState is like a "snapshot" of a whole block. which includes BlockData, and other stuff

smoky oak
#

mm

#

btw, alex, did you reopen the issue?

vast raven
#

Is there a way to update the swim state? Like the arms and legs positions after calling EntityPlayer#setPose ?

tender shard
#

the code doesn't like there's any issue with it tbh

#

you should really try with a tiny plugin that does nothing besides printing "close" and "quit" and doesn't do anything else

#

only if it then still happens, that issue should be opened again

smoky oak
#

watch me

tender shard
#

otherwise it must somehow be caused by you ¯_(ツ)_/¯

#

idk

#

normally I'd just try it out rn but I'm currently using gradle and it's a pain to quickly compile sth there into the plugins folder

smoky oak
#

eh not a big deal, im almost done

#
[23:54:09] [Server thread/INFO]: Moterius[/127.0.0.1:51610] logged in with entity id 279 at ([world]-101.00716740151456, 84.0, -34.53516050006216)
[23:54:12] [Server thread/INFO]: Moterius lost connection: Disconnected
[23:54:12] [Server thread/INFO]: [DAMNIT] PLAYER QUIT TIME IS 81738930559800
[23:54:12] [Server thread/INFO]: [DAMNIT] INVENTORY CLOSE TIME IS 81738947675200
[23:54:12] [Server thread/INFO]: Moterius left the game
package io.github.moterius.DAMNIT;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Echo extends JavaPlugin implements Listener {

    @EventHandler
    public void onLeave(PlayerQuitEvent event){
        getLogger().info("PLAYER QUIT TIME IS "+System.nanoTime());
    }

    @EventHandler
    public void onInventoryClose(InventoryCloseEvent event){
        getLogger().info("INVENTORY CLOSE TIME IS "+System.nanoTime());
    }

    @Override
    public void onEnable(){
        getServer().getPluginManager().registerEvents(this,this);
    }
}
#

done

tender shard
#

then open a new issue for that

smoky oak
#

i dont have an account 😅

tender shard
#

you can quickly make one, jira doesn't even require the CLA

#

you just signup and that's it

smoky oak
#

whys my full name required

tender shard
#

idk

remote swallow
#

you dont need ur full name on jira

smoky oak
#

alright imma use my artist name then

#

that fine u recon?

#

cant see any TOS

remote swallow
smoky oak
#

'CLA' ?

remote swallow
#

contributing licensing agreement

#

you dont need to sign it

#

its just where it explains about jira signup

worldly ingot
#

You don’t need to sign the CLA to create issues on the JIRA

kindred pasture
#

hey guys i've got this plugin that works fine but I tried storing my Shapeless and Shaped recipes in a list of CraftingRecipe type and get this on startup
Failed to register events for class com.technovision.craftedkingdoms.commands.RecipesCommand because org/bukkit/inventory/CraftingRecipe does not exist.

Little confused as CraftingRecipe does infact exist and the rest of the Spigot and Bukkit API work fine

#

This is for 1.20.1 btw

ivory sleet
#

thats odd

#

'

#

maybe try to get a fresh server jar

kindred pasture
#

Hmm ok i will try that

#

Weird it works!

#

What in the heck

#

Thank u hahaha

ivory sleet
#

:3 nice

worldly ingot
#

It was added not long ago so the server was probably just a few commits out of date

kindred pasture
#

Ah that makes sense, this jar is from a month ago

tender shard
#

anyone wants to write a huge shell script with me lol

remote swallow
#

todo what

tender shard
#

a tiny server manager for CLI - e.g. to quickly create a server with any given version (it'd build spigot or download paper of a specific version), update servers, install plugins by symlinking from a plugin repo, start/stop/attach to servers, stuff like that.

Currently I only wrote the very basics because I needed it formyself

remote swallow
#

that sounds painful

lost matrix
#

That sounds like something you dont want to write in shell. How about python?

remote swallow
#

write it in java

tender shard
#

yeah but shell scripting is fun. I once already done this in python, it set up a whole environment etc but I'd rather do it in shell so it works for everyone

#

also I'm not good at python so my code was shit

#

the good thing about sh scripts is that you don't need to have anything installed (well besides screen for this, ofc)

remote swallow
#

make it in batch

livid dove
#

Make it in vba for power point like a real dev

tender shard
#

yeah that won't work, I only have 360 packages installed

#
root@gameservers-cli:~# 2>/dev/null apt list --installed | wc -l
360
#

having python installed is bloaaaat

compact haven
#

oh if we're talking about scripts

#
dominick@n1:/etc/ssl/certs$ cat renew.sh 
domain=$1

# Remove the first parameter from the argument list
shift

# Generate the certbot command options for subdomains
subdomains=""
for subdomain in "$@"; do  
  subdomains += " -d '$subdomain.$domain'"
done

rm -r /etc/letsencrypt/live/$domain

certbot certonly \
    --manual \
    --preferred-challenges=dns \
    --email admin@$domain \
    --agree-tos \
    -d '$domain' \
    $subdomains

dir_path=$(ls -d /etc/letsencrypt/live/$domain* | sort -Vr | head -n 1)

cp -f "$dir_path/*" /etc/ssl/certs/$domain
rm -r "$dir_path"
rm /etc/ssl/certs/$domain/README

chown -R root:ssl-$domain /etc/ssl/certs/$domain
chmod -R 740 /etc/ssl/certs/$domain
chmod 750 /etc/ssl/certs/$domain/renew.sh
#

i made this lovely thing

#

so i can just
./renew.sh dominick.sh * personal.*

#

i love it

#

though i haven't got to test it yet

tender shard
compact haven
#

well I need to do it manually because I write * certs

tender shard
#

wdym?

compact haven
#

so I need to add the DNS TXT challenge

tender shard
#

yeah me too

#

hence the --dns-cloudflare plugin

compact haven
#

oh yeah i have no idea what that does

#

just writes to the dns records auto?

tender shard
#

it sets the record for you

#

then deletes them when it's done

compact haven
#

yikes that's magic

#

I manually do it at porkbun

tender shard
#

there's plugins for many providers but I switched to cloudflare for all domains

compact haven
#

as for the reason my script is more than just the certbot command

#

let's me generify the script & write to /etc/ssl/certs instead of the letsencrypt managed directory

tender shard
#

I wish IJ would use the system file explorer - the builtin one is so annoying. on macOS it does the system file dialog 🥲

terse pumice
#

Any idea how to get an instance of Holder<net.minecraft.world.level.biome.Biome> from a biome name (eg. "datapack:biome")

compact haven
compact haven
#

ofc

tender shard
#

uugh

#

that one does not allow to open folders as project

lost matrix
#

This here, no?

tender shard
#

that's the IJ explorer

#

I just switched to the windows native explorer

#

and it really only lets you choose files

lost matrix
#

oof

viscid egret
#

is it considered against the spigot tos to scrape the plugins on the spigot marketplace?

opal juniper
#

don’t they have an api

tender shard
#

yes they have

viscid egret
tender shard
#

https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=%s

viscid egret
#

i spent so much time building a proxy server in order to bypass spigot's cloudflare restrictions to allow web scrapers

#

thank you

#

ill just use spiget

opal juniper
#

silly billy

tender shard
#

damn look at this fancy heredoc delimiter

tender shard
simple schooner
#

can I only have one prompt? btw in the string prompt, how do I get the player's chat input?

tender shard
#

and to get the input, well that's the string parameter in acceptInput(...)

simple schooner
#

Ohhhh

simple schooner
#

i see now

tender shard
#

acceptInput means: you get the previous conversation data and user input as parameter, and then you return a new prompt how the conversation continues - or you return END_OF_CONVERSATION

simple schooner
#

okay thank you!

#

i might as well read the example code you've provided

vapid grove
#

is MySQL free to use

quaint mantle
#

no

#

i think base price is around $29.99 a month

young knoll
#

What

vapid grove
#

ah

young knoll
#

You can host a MySQL database on your device for free

vapid grove
#

or can i just host it off of a hosting site

#

if i add the files or smth

young knoll
#

Most hosting sites just provide a MySQL database for you

opaque scarab
#

This is embarrassing I’ve forgotten how to do this, but how do I create a craft entity without adding it to the world?

young knoll
#

Create the NMS entity via its constructor

vapid grove
#

oh whoa awesome

#

i love shockbyte

opaque scarab
young knoll
#

No

#

The NMS entity, not the craft one

opaque scarab
#

I don’t see a NMSAllay class

young knoll
#

Well yeah

#

It’s likely just Allay

river oracle
#

Allay for MojMaps and Spigot maps

river oracle
opaque scarab
#

The Allay class takes a huge amount of arguments in the constructor. Hasn’t there been a way to just create an entity with default values?

river oracle
#

EntityType and Level

opaque scarab
river oracle
#

mappings website I posted above carries for stupid import errors and stuff like that

vapid grove
#

When running the /award C4 command (gives me the C4), the item is the correct model (c4 shaped as a head)
When crafting however, its a steve head.

#

Any idea why that might be here?

#

whoops

#

forgot paste

subtle folio
#

well in your generate item function you pass in null..?

#

is that not the item data in which you want to set

naive loom
#

I have a system right now where I'm adding vectors to a map because I'm trying to seperate this into a sort of "model" to be able to be copied, right now the origin is setting at the block of jungle wood. (the one to the left of the white wood) and I would like the origin to start at the bottom instance of amethyst, how could I do that?

vapid grove
#

what no

vapid grove
#

here ill show an example of the application for that

subtle folio
#

you also never set the items meta data

vapid grove
#

thats cause MetaFuncs takes care of that for me

subtle folio
#

ItemStack#setMetaData

#

i’m gonna need to see more code then lol

vapid grove
#

Ill show you the Manager.Skull stuff

#
private final HashMap<String, String> skullList = new HashMap<>();
    public void addNewSkull(String key, String data){
        skullList.put(key, data);
    }

    public ItemStack getHeadByID(String key){
        String texture = skullList.get(key);
        if(skullList.containsKey(key)){
            return getHeadByTexture(texture);
        }
        return new ItemStack(Material.PLAYER_HEAD); //Return a blank head.
    }
#

Also before you say "Material.Player_Head is right there", why would it return that ONLY inside the recipe

#

That makes 0 sense

subtle folio
#

well you use a custom texture pack right

#

for your c4

vapid grove
#

no

#

its just a player head

subtle folio
#

oh

#

so this is just a skull issue

vapid grove
#
Skull.addNewSkull("C4", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGNlZTY5NGI1ZGYzNGY0MGQ1ZTc3NGJkMzA0NmRiODQ5ZTM0ZmY1NWE0ODJkMDczMWU5ZDdhN2JiNzRhMTIifX19");
subtle folio
#

what mc version are you on

vapid grove
#

1.20.1

subtle folio
#

you may want to look into game profiles then

#

and using those

vapid grove
#

Alright

vapid grove
#

i think im alread yusing those

#

sorry i went afk

#
public ItemStack getHeadByTexture(String texture) {
        ItemStack head = new ItemStack(Material.PLAYER_HEAD);
        PlayerProfile profile = Bukkit.getServer().createPlayerProfile(UUID.randomUUID(), "");

        try {
            profile.getTextures().setSkin(new URL(getURLFromBase64(texture)));
            SkullMeta meta = (SkullMeta) head.getItemMeta();
            meta.setOwnerProfile(profile);
            head.setItemMeta(meta);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return head;
    }
#

unless this isnt the same thing

strong parcel
#

Hey, you ever figure this out?

quaint mantle
vapid grove
strong parcel
#

So if I prevent an item from being damaged by entities and blocks and prevent it from despawning, is there any way it can be destroyed?

unkempt peak
#

Also if it falls into the void

shadow night
#

Yeah

#

Void does not inflict damage for whatever reason

#

To items

echo basalt
#

Never really worked with the scoreboard api, is there a better way to do this?

tall dragon
#

coz ur using the same scoreboard. when doing it with multiple players it'll mess up no?

echo basalt
#

yeah that's a great question

#

But that's why I have it set as NEVER rather than TEAM_ONLY

#

but yeah I might use a team per player

#

idk

shell robin
#

I can't use api even if I enter the dependency part correctly

#

What should i do

#

I will send an example

smoky anchor
smoky anchor
smoky anchor
#

Did you hit the maven refresh button ?

shell robin
#

refresh button? 🤦🏻

#

where is it

shell robin
sharp kayak
#

Is it possible to manually add the documentation into intellij? Its not being displayed while pressing Ctrl+Q (in some projects)

smoky anchor
#

?paste

undone axleBOT
sharp kayak
shell robin
#

how can i do it manually

smoky anchor
#

You open the "Maven" tab in IntelliJ and hit the refresh button there ig

shell robin
#

oh okay

#

i deleted something and i saw it

#

oh

smoky anchor
#

(I just hope that "guide" is not old)

#

also, why is it telling you about 7.2.9, when you have 7.2.0 in the pom 🤔

shell robin
shell robin
#

Is dependencies a long process to download?

smoky anchor
smoky anchor
shell robin
#

It's already over 4 minutes, isn't that normal?

shell robin
#

oh its finished

gusty panther
#

can an1 help me

shell robin
#

Unresolved dependency: 'com.sk89q.worldedit:worldedit-core:jar*:*7.2.9'

shell robin
echo basalt
#

something tells me that version doesn't exist

echo basalt
#

interesting

#

You got the right repo?

shell robin
#

it should be true but i can check it right now

eternal valve
#

@shell robin la enes abi yardım et

#

By adding a minecraft private key, for example, when I press the e key, can I make a different gui panel outside the inventory?

smoky anchor
undone axleBOT
half bane
#
    @EventHandler
    public void onPlayerEditBook(PlayerEditBookEvent e){
        Player plr = e.getPlayer();
        BookMeta newMeta = e.getNewBookMeta();

        if(newMeta.getPageCount() > getConfig().getMaxBookPages()){
            plr.sendMessage("AAA");
            e.setNewBookMeta(e.getPreviousBookMeta());
            //e.setCancelled(true);
        }
    }

How do I make BookMeta apply instantly? It only applies after the player rejoins

eternal valve
#

minecraft

smoky anchor
#

For starters, you can not have custom keybinds serverside
opening player inventory is not known to the server - no packet is sent, no event can be fired

twilit roost
#

hey!

does anyone know of a way to authorize my plugin with spigot payment?
basically checker whether the plugin was bought or redistributed somewhere

e.g.: Jets-Minions have this authZ, but idk how it works

tender shard
shell robin
tender shard
shell robin
#

i dont know is there any console on intellij

shell robin
#

give me a second

#

maybe i can find it

eternal valve
tender shard
shell robin
smoky anchor
shell robin
eternal valve
smoky anchor
#

You can't really make a menu like this, you're limited to vanilla containers - chests, hoppers, dispensers 'n such
There are however ways to "retexture" the menu and make it look/behave like something different, but for clicking you are still limited to slots.

tender shard
deft summit
#

Heyo, quick question. Whats the best way for a plugin to have self-updates? Im coding a private plugin and would love that it automatically updates when i push a commit to github

shell robin
#

thank you

tender shard
deft summit
#

(Its a private plugin, auto-updates are just for conveniance, they will most certainly contain bugs lol)
So i just download the jar to the updates folder and restart the server then?

glossy venture
#

anyone know why gradle breaks on jitpack for me

#

with error Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory()

#

it works on my pc

tender shard
glossy venture
#

gradle and gradle wrapper are seperate i think

#

i think its using wrapper 8.3

#

wait idk

tender shard
#

no you're actually using version 4.8

#

old gradle versions had problems with java > 10

glossy venture
#

wtf

tender shard
#

how does your jitpack.yml look like

#

or however its called

#

are you by any chance calling gradle build instead of gradlew build ? wouldnt surprise me if jitpack would by default use gradle 4, it also uses jdk 8 by default

#

maybe you could just send the repo

glossy venture
#

i have no idea what jitpack is doing tbh

#

i cant put gradlew clean install as a command because it doesnt find gradlew

#

because the pwd is not the repo

#

for some reason

glossy venture
#

it runs this appereantly