#help-development

1 messages · Page 769 of 1

slender elbow
#

right

storm crystal
#

but thanks either way

grim hound
umbral ridge
#

11000010 10110110

#

xd

grim hound
#

Blasphemy

#

Thou shall not worship an evil deity

storm crystal
#

how can I add more than sharpness 5 to a sword for instance?

#

idk how to say it

#

illegal enchantments?

grim hound
storm crystal
#

ah unsafe

#

okay

warm portal
storm crystal
#

I know this part

#

wait I can add it to ItemStack

#

not via ItemMeta

glad prawn
#

no pls

storm crystal
#

I mean

#

I can only add it like that

glad prawn
#

nah 1.8 😭

storm crystal
#

?

glad prawn
#

your spigot version?

storm crystal
#

how to check it

grim hound
#

and look at the import

storm crystal
#

where

pine forge
#

Im currently trying to make a portable brewing stand, and it seems like if i just open an inventory of type brewing for the player that wont allow the player to brew in there. Does the brewing stand have to have a block connected to it?

echo basalt
#

Yes 🗿

#

@river oracle might know enough

pine forge
#

Hmm so i have to put a brewing stand somewhere in the world, and the portable one accesses that block brewing stand?

river oracle
#

its going to be difficult!

#

especially if you want it to work 😈

#

I haven't even gottent his far with Tile Entities because well they aren't supposed to work without a world

#

goal 1. opening the menu its easy enough. Create TileEntityBrewing with NMS and create its container,
goal 2 is going to be a bit tricky. You're going to want ticking your TileEntityBrewing you made. However, you've got to be very careful to not let it keep ticking forever this could cause a build up of tasks and eventually possible memory leaks

#

I'd reccomend Ticking it within a BukkitTask that runs on the main thread

#

keep site of the BukkitTask so it can be canceled once the TileEntity falls out of scope. It might be tricky to figure out exactly when it does though

#

ticking it is less than straight forward however, as all block tick mechanics are not within the TileEntity rather within the Block class

#

you essentially need to trick the server into thinking your virtual TileEntity is a real block at a real location, much easier said than done

pine forge
#

Okay thats more theory than practice, has anybody actually done that before and can show an example?

river oracle
#

I could dig up code to help but theory is pretty much as far you'll go by most people

pine forge
#

Where would i put that "fake" brewing stand so that it doesnt mess with players or other events in the server

river oracle
#

let me look at BlockBrewingStand

storm crystal
#

how can I give bold name to an item

#

like a color is with ChatColor

#

how about bold underline etc.

pine forge
#

ChatColor.BOLD and ChatColor.UNDERLINE exist

river oracle
#

@pine forge your best bet is to see what you can do with this constructor
public BlockBrewingStand(BlockBase.Info blockbase_info) { it'll be called different with moj maps prob like BrewingStand block or something, but you need to create this object and make a new ticker()

    @Override
    public TileEntity newBlockEntity(BlockPosition blockposition, IBlockData iblockdata) {
        return new TileEntityBrewingStand(blockposition, iblockdata);
    }``` this method can help create a TileEntity if you don't have one
```java
    @Nullable
    @Override
    public <T extends TileEntity> BlockEntityTicker<T> getTicker(World world, IBlockData iblockdata, TileEntityTypes<T> tileentitytypes) {
        return world.isClientSide ? null : createTickerHelper(tileentitytypes, TileEntityTypes.BREWING_STAND, TileEntityBrewingStand::serverTick);
    }
``` this mehtod will create the ticker
#

note that you'll need to manually call the Tick method

pine forge
#

Okay but if we're faking a block here, what happens if someone places a block in the same location or walks into it or something

storm crystal
#

wait how do I do both bold and color at the same time

river oracle
# pine forge Okay but if we're faking a block here, what happens if someone places a block in...

okay more information

    @Nullable
    protected static <E extends TileEntity, A extends TileEntity> BlockEntityTicker<A> createTickerHelper(TileEntityTypes<A> tileentitytypes, TileEntityTypes<E> tileentitytypes1, BlockEntityTicker<? super E> blockentityticker) {
        return tileentitytypes1 == tileentitytypes ? blockentityticker : null;
    }
}``` this method might be better it'll allow you to replicate the innards of getTicker without having it create a new TileEntity bound to the location
young knoll
#

That’s a lot of generics

pine forge
storm crystal
young knoll
#

Yeah you gotta toString one

river oracle
young knoll
#

Java is fine with adding objects to a string

#

But adding object and object is no beuno

pine forge
eternal oxide
#

or "" + chatColor.Bold + "blah" is fine

#

as you start with a string

river oracle
ivory sleet
pine forge
#

is the block in the world, does it appear to playesr?

river oracle
#
    @Nullable
    protected static <E extends TileEntity, A extends TileEntity> BlockEntityTicker<A> createTickerHelper(TileEntityTypes<A> tileentitytypes, TileEntityTypes<E> tileentitytypes1, BlockEntityTicker<? super E> blockentityticker) {
        return tileentitytypes1 == tileentitytypes ? blockentityticker : null;
    }``` this method is a protected static method you need to use reflection to get it and use it. This will help you create something that will beable to tick
storm crystal
#

?pdc

pine forge
#

I mean the easy solution without nms, would be to just put a brewing stand somewhere far off, store the coordinates, and then access it whenever someone rightclicks the portable

#

Obvious issues with this approach but it would be quite a lot easier to implement than the nms one

river oracle
#

you'd have to leave it loaded and hope no one ever found it

pine forge
#

yea

#

what if i put it outside off the border, does that work?

storm crystal
#

is it okay to have 2 classes in same java file?

pine forge
#

yes in some cases

#

but usually only inner classes

river oracle
#

@pine forge my bad again. I way overcomplicated this its way easier sorry I'm like digging through NMS its fucked
TileEntityBrewing stand has a public static method called
public static void serverTick(World world, BlockPosition blockposition, IBlockData iblockdata, TileEntityBrewingStand tileentitybrewingstand) {
you can call this method to tick the brewing stand it shouldn't have any adverse affects afaik if you input arbitrary position and world, though you'll need to keep the block data consistent or it'll fuck over your brewing progress.

#

note that calling this method only ticks the brewing stand once though

#

so you'll need a scheduler

pine forge
#

i cant just put a world that doesnt exist though can i?

river oracle
#

let me check

#

honestly @pine forge you might be best off manually implementing this tick method this is so heavily bound to the world it'd be impossible to use

pine forge
#

this whole thing sounds like it requires me to dig throuhg nms for the next couple of days

river oracle
#

if you're using moj maps you can just decompile the class and check the method yourself

pine forge
#

time that i dont really have

river oracle
#

unfortunately there is no other way to do this that guarentees your code will work

pine forge
river oracle
#

I would stay away from that implementation

pine forge
#

Ill take a look at the nms functions you sent me and the classes

river oracle
#

you might beable to pull this off very nicely actually if you take a look at that static method

#

RIP out absolutely anything you don't need

#

you might beable to even achieve a lazy implementation that doesn't tick while the menu is closed 😈

pine forge
#

i would want it to be brewing though while the menu is closed

river oracle
pine forge
#

ah

river oracle
#

that way you don't need to run a background task constantly

pine forge
#

that sound scool

river oracle
#

their is no UI to display, so there is no need to update

pine forge
#

does minecraft do that?

river oracle
#

no

pine forge
#

just like fast forward once someone looks in the menu

#

thats an idea for a performance mod

rotund ravine
#

Are you planning on releasing this plugin?

river oracle
#

minecraft can't because other things happen while the menu is closed

#

e.g. sounds

pine forge
#

no its for a private smp

rotund ravine
#

Alright

river oracle
#

you can't not tick because otherwise the sounds would not play

#

@rotund ravine interested in an implementation?

rotund ravine
#

Nope

river oracle
#

ah i see

pine forge
rotund ravine
#

Was just gonna mention god awful anticheats

#

To hus opening a far away inventory

river oracle
rotund ravine
#

his

river oracle
#

prey sure that's how MC handles

pine forge
#

because theres probably gonna be an anticheat on the server

rotund ravine
#

Well, maybe if ur lucky

pine forge
#

Okay well tysm for all the help, i gtg now

#

might come back later

#

ill consider the nms solution, but im really not sure if i have the time to figure that thing out

#

maybe ill just ditch the idea completely

#

gn

river oracle
young knoll
#

Yeah I don’t think it’s quite that simple

river oracle
#

that is an undisputed fact

#

that is unless the client spoofs a movement hack too

zenith gate
#

Would opening an anvil inventory return the owner as null? or would it be whoever placed it?

young knoll
#

Well yeah

#

That’s what the client does

zenith gate
#

alr thanks.

young knoll
#

If minecraft was so simple we wouldn’t have a hacking issue

#

Is the player allowed to fly? No? Well then why are they flying!

river oracle
#

#1 anti cheat developer here

young knoll
#

I legit did that very early on in my plugin making days

#

Was very sad when it didn’t work

opal carbon
#

if (player.isFlying() && !player.hasPermission("fly")) {
player.kickPlayer("hahahahaha!!!!");
}

#

best new fly detection

young knoll
#

Okay but that was actually it

sterile token
#

what can cause mongo server not start after activiting auth? Its simple not start the process

split lichen
#

Does anyone know the optimal way of implementing custom model data for tools and armor? I have the required blockbench files, I'm interested in the best way of hooking code into them to make them accessible in-game

drowsy helm
sterile token
split lichen
sterile token
drowsy helm
#

Just use a library makes life easier

drowsy helm
sterile token
split lichen
#

Would it be possible to create a custom resource pack instead?

young knoll
#

What are these models

drowsy helm
#

A resource pack is needed either way

young knoll
#

Items? Blocks? Mobs?

storm crystal
#
@Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player player)) return false;
        ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
        ItemMeta swordMeta = sword.getItemMeta();
        if (swordMeta == null) return false;
        NamespacedKey key = new NamespacedKey(plugin, "customdamage");
        swordMeta.getPersistentDataContainer().set(key, PersistentDataType.STRING, "ksiezyc");
        swordMeta.setDisplayName(ChatColor.GOLD + "Chinskie Ostrze Ksiezycowego Swiata");
        ArrayList<String> list = new ArrayList<String>();
        list.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "30");
        list.add(ChatColor.GRAY + "Silny przeciwko potworom: " + ChatColor.RED + "70%");
        list.add("");
        list.add(ChatColor.GOLD.toString() + ChatColor.BOLD + "LEGENDARNY MIECZ");
        swordMeta.setLore(list);
        sword.setItemMeta(swordMeta);
        player.getInventory().addItem(sword);
        return true;
    }

The sword that's spawned with this command doesnt seem to have PDC at all, what could be wrong?

split lichen
young knoll
#

Well for tools all you need is custom model data

#

Should be easy to find a tutorial on setting that up

#

For custom armor models you’re gonna need a bit more

split lichen
#

Apart from that, I'm not sure how to hook into it

drowsy helm
young knoll
#

That’s all you need code wise

split lichen
#

I see, and in order to make the textures and models physically present in-game, I'd have to force the resource pack onto the client?

sterile token
drowsy helm
split lichen
#

Alright, I think I have enough to go on, thank you @drowsy helm and @young knoll for your time

storm crystal
drowsy helm
#

Setting custom model data code wise is pretty easy though

storm crystal
#

does it matter that im doing the check in different plugin?

remote swallow
#

if the plugin instance is different yes

#

you would need to use NamespacedKey.fromString

drowsy helm
storm crystal
remote swallow
#

/data get entity @s SelectedItem

drowsy helm
#

Yeah so your check isnt working

#

It is setting the tags though

young knoll
#

Get with the times

remote swallow
#

oh ye

#

forgot which it was

storm crystal
#

?paste

undone axleBOT
remote swallow
#

i dont want it cmarco

storm crystal
sterile token
storm crystal
#

it looks like that

remote swallow
#

use NamespacedKey.fromString("otherpluginname:customdamage")

sterile token
drowsy helm
#

Is it a docker container

sterile token
#

its simple mongo no container

drowsy helm
#

Are you editing mongod.conf?

sterile token
#

I did it via admin db

#

mongosh
use admin
db.createUser(
{
user: "myServerAdmin",
pwd: "mipassword",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
);

#

like that @drowsy helm

storm crystal
#

cuz it produces null key

drowsy helm
#

You have to enable authentication in the config still

young knoll
drowsy helm
#

And how are you verifying that it’s not startingb

sterile token
#

and im using systemctl start mongod

young knoll
#

Failed with result exit-code

#

That’s not quite how you use exit codes

sterile token
#

what??

remote swallow
drowsy helm
#

Status 14

drowsy helm
#

But it’s hard without an error

#

Could literally be anything

sterile token
#

i dont have any error

#

thats the problem

#

the log file doiesnt have any clear error

young knoll
#

Okay so they do print the actual exit code

sterile token
#

how?

young knoll
#

But they also just print exit-code

sterile token
#

it just dont show any error im not trollimg lmao, just wanna fix my issue...

#

thats actual mongod.conf

storm crystal
#

I encountered one problem, if I wanted to make a lootbox plugin that would give players items with PDC tags, but also made plugin that would make enemies drop same items with PDC tags, is there any way to universalize apart from dumping it into same plugin?

#

the only thing I can think of is checking around all custom plugins if they created certain PDC tag

young knoll
#

Just use the same tag in both plugins?

storm crystal
hazy parrot
#

because that will prepend plugin name as namespace key

storm crystal
#

whats the alternative?

sterile token
hazy parrot
storm crystal
young knoll
#

Get an instance of the other plugin

#

Via Bukkit.getPlugin or have the other plugin expose it via some api

hazy parrot
#

^

young knoll
#

Actually i think it’s PluginManager#getPlugin but yeah

storm crystal
#

I... think ill use NamespacedKey.fromString

young knoll
#

Tis what I do

ivory sleet
young knoll
#

Don’t do that

ivory sleet
#

w/o needing the plugin instance

young knoll
#

It’s deprecated

#

Use fromString

ivory sleet
#

@Internal

#

oo

young knoll
#

But yeah at the end of the day

sterile token
young knoll
#

A namespaced key is just 2 strings

storm crystal
#

yeah I need this kind of thing

ivory sleet
#

myeah, doesnt it just translate the plugin name into a key?

storm crystal
#

is there a way to make universal folder for configs that plugins could use?

ivory sleet
#

ugh, I think the point of data folder is to prevent it

#

universality that is

storm crystal
#

the thing is that I need one command plugin to access it

#

worst case ill just make two copies and edit them at the same time

#

I want one plugin to take args from config when giving custom weapon and the other take args from same config when doing custom damage

young knoll
#

Plugins can access the data folder of other plugins

#

If they really want to

ivory sleet
#

if u can, maybe avoid direct config interference

#

like, use some sort of middleman object

young knoll
#

Yeah

storm crystal
#

config interference as in 2 plugins using it at the same time?

ivory sleet
#

well, that one plugin explicitly touches the other plugin's config

young knoll
#

Yeah, rather than having plugin B touch plugins As config

#

Have plugin A offer the values from the config in some way

storm crystal
#

well I can just make two same configs

#

I feel like maybe working with database would be easier to set it up

young knoll
#

Generally you don’t really want to interact with another plugins database either

#

The plugin should be providing you an api

storm crystal
#

is there any tutorial for that

#

never worked with apis

wet breach
#

Pretty sure you have

storm crystal
#

I bet my right testicle I havent I already lost my left one to other bet

wet breach
#

Spigot/bukkit is an api

storm crystal
#

I think I need to actually see what api is

wet breach
#

Its just a way of programming that allows some outside thing to either interact with it or obtain information without resorting to code or memory injection etc

storm crystal
#

wouldnt I need web deb knowledge to make plugin api?

wet breach
#

No

#

As long as another plugin builds against a plugin that provides api they can interact and this is possible because plugins dont run in their own process

storm crystal
#

do you know any guide for that?

rotund ravine
wet breach
#

The server loads plugins into its process space so all plugins can see each other

wet breach
rotund ravine
#

Was just curious

wet breach
storm crystal
#

acually is there a plugin that is not open source?

wet breach
#

Yes plenty

#

Doesnt mean you cant interact with them just makes it more difficult because you dont have source freely available and have to resort to other methods

#

Anyways the project i linked is one of my old plugins that is defunct at the moment but it should still be valuable in how to make api related things.

storm crystal
#

idrk how to read it

wet breach
#

Well it has 2 modules

#

One is the api jar and the other is the plugin jar. The plugin jar has to implement the api in order for it to work. Dont have to do it this way just makes it easier

#

Main thing that the plugin provides is it uses custom events

storm crystal
#

😭

#

I think its too much for me as for now

devout tartan
#

Does anyone know why I can override onCommand of JavaPlugin?

#

also, when does anyone know, when does it actually fire? (I overrode it, but didn't register it anywhere)

hazy parrot
#

with that little information. im sure most of us don't know

devout tartan
#

Alright, i'm going to be more specific

hazy parrot
devout tartan
#

JavaPlugin class has an abstract method onCommand, my question is** why**

hazy parrot
#

oh

#

onCommand

#

my bad. i read onEnable

devout tartan
#

No worries

hazy parrot
#

onCommand because if you go down the herarchy, javaplugin implements CommandExecutor at some point

lost matrix
devout tartan
#

Alright

river oracle
#

anyone have an example of what spigot PersistentData looks like in NBT

lost matrix
river oracle
#

I get that much I'll prob look for a string somewhere I reember lynx sent one

#

I kinda just need a visual representation

lost matrix
#

Serialize the ItemStack. It will show you the data as sNBT

river oracle
#

I was hoping I wouldn't have to go in game :P I'm being so lazy

lost matrix
#

Can also just print it to console 🙂

#

Yeah, this looks like you shouldnt do it

#

ok

young knoll
#

Get an item with pdc and /data get entity @s SelectedItem

#

All pdc just goes in a compound called PublicBukkitValues

glad prawn
#

u can but dont 💀

river oracle
#

I'm doing some very naughty things to learn about item stacks

young knoll
#

Item stacks are just fancy compound tags

#

I mean

#

Tbf a lot of things are like that in the end

river oracle
#

oh I know I am reimplimenting an ItemSTack class

#

that edits the NBT directly

young knoll
#

Wut cursed stuff are you up to

river oracle
#

lots

#

I'll show you

#

?paste

undone axleBOT
devout tartan
river oracle
#

@young knoll ignore the pdc stuff I need to rework that still because PDC is still under construction
https://paste.md-5.net/ekawafazal.java but this is an API I made that directly edits the NBT instead of using ItemMeta and copying

young knoll
#

Ah

river oracle
# young knoll Ah

I mean ideallistically bukkit could do this, which I personally think would be preferable though I'm sure there is some valid counter. The issue is with Bukkit you create ItemStacks as an abstract class vs an interface

#

ofc ItemMeta is still needed in some capacity to expose compounds

ivory sleet
#

is this subject to pr? or just ur own thingy

river oracle
#

it would break contract

ivory sleet
#

:,)

river oracle
# ivory sleet :,)

well fixing the ItemStack is easier said than done because it is an AbstractClass

lost matrix
river oracle
#

can you send me the SNBT data if you have it

#

I'm more interested in that

#

if not its fine

#

thank you btw

young knoll
#

Gotta redo CraftItemMeta still

river oracle
lost matrix
# river oracle thank you btw
ItemStack{DIAMOND_AXE x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, PublicBukkitValues={
    "spigotsandbox:key_one": "This is a string value",
    "spigotsandbox:key_three": 3.1415d,
    "spigotsandbox:key_two": 42
}}}
river oracle
#

imho we should really be editing directly vs copying a shit ton, I wonder why it works the way it does

river oracle
#

lol i guess I should use them as I have them lol

#

@young knoll do you know why ItemStacks are the way they are is there a real reason

young knoll
#

They copy and wrap

river oracle
#

yeah but why the copy part

young knoll
#

Depends on the circumstance

#

Since there’s asCraftCopy and asCraftMirror

eternal night
#

I mean, there is 100% a point in their implementation

ivory sleet
eternal night
#

Preemptive translation of internals to API types means faster reoccurring access

#

Tho parsing slows down

lost matrix
#

Arent items immutable in nms? Something like that.

eternal night
#

Switching that to just wrapping nbt means you pay the price pdc pays rn

ivory sleet
#

itemstacks nope?

#

i think items are tho but thats basically material

eternal night
#

Reads and writes slow down but the fetching is cheap

#

Yea Item is the "material"

#

Beyond that, ehh, copy instead of just keeping the internal instance also means people fuck less things up

#

I can edit my stack usually fine without fucking the actual state up

river oracle
eternal night
#

No like

#

I get stack

#

I do something with it

ivory sleet
eternal night
#

No like, I get a stack from somewhere and change it's type

river oracle
eternal night
#

For something

ivory sleet
#

ah

eternal night
#

Do I expect that to reflect in-game ?

#

Ehhhh

young knoll
#

It does

#

Sometimes

eternal night
#

Sometimes XD

#

Yea

young knoll
#

Depends on where you get the stack from

eternal night
#

Ans that is the worst part

#

By far

river oracle
#

so essentially its an attempt at being semi-immutable but its not very good at it

eternal night
#

Yea, to be fair, I don't really know the best solution for this down the line

lost matrix
#
  /***
   * This method has a decent chance of renaming the item.
   */
eternal night
#

Immutability is great

ivory sleet
#

yeah like storing an itemstack given from some other api thingy which is a CraftitemStack under the hood can B a bit goofy

eternal night
#

Saves you from a lot

river oracle
eternal night
#

But immutability on data heavy objects is not fun

#

Well

#

Yea

river oracle
# eternal night Yea

I'd say copying on every operation is quite a heavy task, You could limit this by using Consumers and doing bulk tasks though

ivory sleet
#

has it considered to have stacks that delegate to nms stacks as well as stacks that are just copies to the api (like they co exist)

#

w/o craftitemstack

young knoll
#

Isn’t that kinda what we have now

eternal night
#

Well, the issue with that imo is always like, how do you express that nicely in a type system

ivory sleet
eternal night
#

Right now it's terrible because you have this one mystical type that maaaaybe one thing maybe another

ivory sleet
#

lol true

eternal night
#

I would not mind always doing a single copyy and then wrapping nbt

river oracle
eternal night
#

I am not a huge fan of directly wrapping internal stuff usually

river oracle
young knoll
#

ItemStack and MutableItemStack

#

No wait wait

eternal night
#

Idk, I like my "write' operation at the end

young knoll
#

ItemStack and FastAsyncItemStack

lost matrix
#

Its always confusing if you have an ItemStack variable, add it to an inventory, modify it later, and in some instances
edit the ItemStack inside the inventory alongside, and sometimes it has no correlation anymore.

river oracle
ivory sleet
#

lol

quaint mantle
#

If itemstack can mutate we had way less performance.

eternal night
#

The bigger thing with wrapping nbt isn't even if you are linked to an nms one or not

river oracle
young knoll
#

It’s magic

eternal night
#

Wrapping nbt is a vibe anyway just to get rid of item meta fucking you up when parsing

river oracle
young knoll
#

MD said that CraftItemMeta should just directly wrap the NBT

eternal night
#

I mean, there is not much to fix

young knoll
#

So that’s his opinion on the matter

ivory sleet
#

that makes more sense

river oracle
eternal night
#

It's a rather borked system that is so old, changing things breaks everything

young knoll
#

Usually loads stuff into its own variables

eternal night
#

Yea right now it does a full nbt parse

eternal night
#

Which has its problems

#

Commadore can only do so much

lost matrix
young knoll
#

I love CraftMetaSpawnEgg

river oracle
young knoll
#

Because it has 2 layers of legacy jank

#

First from when the mob type was the damage value of the item

river oracle
eternal night
#

Idk, it's a rather fruitless discussion

young knoll
#

Then from when mob type was in the NBT

eternal night
#

Fixing items is not that important compared to the death that is coming

young knoll
#

And now mob type is split into individual types… kind of

eternal night
#

In terms of registry

eternal night
#

Making sure that transition runs smoothly is probably a smarter investment of brain cells

young knoll
#

Still need that gosh darn registry injection api

#

Blah

eternal night
#

Like, item API has its ugly edge cases but the API has places that need more attention

#

E.g. the material enum crap

young knoll
#

My current thought is either a second main class for early loading stuff

#

Or maybe a new load: option for plugins to interact with early loading

lost matrix
#

I kinda feel like enums should be erradicated from a system that aims to be data driven

river oracle
young knoll
#

Although we already have load: STARTUP so…

#

load: SUPERSTARTUP

river oracle
#

1.21 please MD please

eternal night
#

and well, component support is also like

#

Neeeeeded

river oracle
#

so that's one step

lost matrix
young knoll
#

Yeah

eternal night
#

Simple string methods are absolute dogshit

young knoll
#

Some registries can have custom stuff added

river oracle
young knoll
#

Like the biome one

#

But they are already frozen before plugins load

eternal night
#

Use the string templating java is adding

#

For string stuff

#

The legacy format is an absolute terrific pain

#

Exposing it just leads to sadness

young knoll
#

But legacy plugins

ivory sleet
#

§l§4yes

lost matrix
# eternal night For string stuff

Not possible if my "string" is wrapped in 20 components and i need to deserialize it, make sure i dont break the
formatting, and serialize it back into its components.

ivory sleet
#

is there much harm in letting registries be unfrozen forever (Ig it would be a mess but anything in particular?)

young knoll
#

Uhh

young knoll
#

Idk

#

I don’t really know why Mojang freezes them

eternal night
#

Having an incomplete format be a first level API citizen is just not smart

#

Legacy does not fully represent components

#

It cannot

#

Any plugin using it risks loosing data

#

It works finish in your plugin space if you are 100% you are the only one editing that stuff

#

Fineish

#

Fine-ish

ivory sleet
eternal night
#

There

lost matrix
# young knoll I don’t really know why Mojang freezes them

Probably to ensure that an exception is thrown when a registration is done too late.
For example if the registration is done and the server wants to do something with each
registration, you dont want someone to come in late and not get the same treatment.

young knoll
#

True but they are the only ones doing that

#

Smh just write better code so it doesn’t try to register stuff late

#

:p

ivory sleet
#

cant datapacks also do some funky funky stuff?

lost matrix
young knoll
#

Datapacks can add stuff yes

#

But Mojang has full control over their loading

slender elbow
#

thank me later

eternal night
#

I'll thank you tonight 🙂

slender elbow
#

okay to ahead

lost matrix
storm crystal
#

I'm thinking if that's an optimal way of handling custom damage formula:
I'm checking on event if player is hitting a mob with something that is not air, I check if it has custom tag (lets say it has "mySword") and then use this tag to look through config for it's assigned custom statistics (like "mySword.damage", "mySword.elementaldamage" etc.), and then plug them into custom formula and set event damage with it

eternal night
#

Thank me later

slender elbow
#

I won't

eternal night
#

Rudmily

slender elbow
#

i hate phone keyboards

eternal night
storm crystal
#

I didnt want to do god knows how many nested ifs and had to edit it every single time I wanted to add a new weapon

#

so that I could just edit config

lost matrix
ivory sleet
young knoll
#

Yeah that’s… the other issue

#

Stupid reloads

ivory sleet
#

:,)

storm crystal
#

well not really some spigot specific quirks like with that pdc tags

ivory sleet
#

2 weeks

#

and u're off a great start

#

im lovin it :)

storm crystal
#

doing assignments in python feels so off now

storm crystal
#

ngl I did feel kinda cringe when I tried to recreate a hypixel weapon

ivory sleet
#

all registries in BuiltInRegistries.REGISTRY

#

like entity type, item etc

young knoll
#

Those aren’t really important anyway

#

Since they aren’t modifiable

wet breach
ivory sleet
ivory sleet
young knoll
#

There are special ones that are mutable

ivory sleet
#

ugh, last time I checked it just loops through populating each registry and calls freeze on each one

#

nms wise ofc

umbral ridge
#

What are these recipes? The message outputs as soon as the server is started

young knoll
#

Yeah it basically does that

#

It also shoves datapack stuff in ofc

#

The main issue is just how early it’s done

ivory sleet
#

yeaa right

wet breach
young knoll
#

It’s usually 7 for me too

#

Idk what they are

umbral ridge
young knoll
#

Magic

umbral ridge
#

I'm trying to minify the console output

young knoll
#

Just block it then

wet breach
#

Most recipes are just an extension of the defaults

young knoll
#

Yeah I still don’t know what the 7 are

#

Maybe it’s just the different types of recipe

umbral ridge
#

Yeah idk I couldn't find much online about this

wet breach
#

You know sticks, stone, wood etc

wet breach
#

Been a really long time since i have poked with the code for that stuff

umbral ridge
#

I want to get rid of this or at least know what it is xD

#

Other messages I understand

#

except these recipes

ivory sleet
#

iirc

young knoll
#

That would make sense

wet breach
#

If you are looking to minify output you are better off just providing a custom console instead

young knoll
#

Vanilla has a bit more than 7 total recipes

ivory sleet
#

yeah and there are 7 types rn

young knoll
#

Ooh quiz time

#

Shaped, shapeless, furnace, smoking, blasting, complex, and smithing

umbral ridge
#

huh

young knoll
#

That’s my final answer Alex

#

(Rip)

ivory sleet
#

campfire no?

young knoll
#

I think campfire just uses smoking

#

Idk

ivory sleet
#

also stone cutting lol

#

idk

#

as well

#

but ye

young knoll
#

I believe there are also 2 types of smithing recipe now

ivory sleet
#

wait let me pull up class

#
public interface RecipeType<T extends Recipe<?>> {
    public static final RecipeType<CraftingRecipe> CRAFTING = RecipeType.register("crafting");
    public static final RecipeType<SmeltingRecipe> SMELTING = RecipeType.register("smelting");
    public static final RecipeType<BlastingRecipe> BLASTING = RecipeType.register("blasting");
    public static final RecipeType<SmokingRecipe> SMOKING = RecipeType.register("smoking");
    public static final RecipeType<CampfireCookingRecipe> CAMPFIRE_COOKING = RecipeType.register("campfire_cooking");
    public static final RecipeType<StonecutterRecipe> STONECUTTING = RecipeType.register("stonecutting");
    public static final RecipeType<SmithingRecipe> SMITHING = RecipeType.register("smithing");

    public static <T extends Recipe<?>> RecipeType<T> register(final String identifier) {
        return Registry.register(BuiltInRegistries.RECIPE_TYPE, new ResourceLocation(identifier), new RecipeType<T>(){

            public String toString() {
                return identifier;
            }
        });
    }
}


#

o

umbral ridge
#

Interesting

#

was it so urgent to print out "Loaded 7 recipes" tho? xD

ivory sleet
#

prob debug or sth weird

young knoll
#

Ah okay it lumps all the crafting recipes together

ivory sleet
#

yeaa, not sure if it always were the case but yeaa

young knoll
#

Where is merchant recipe

#

Ha…

ivory sleet
#

waait

#

hodup

#

ah its just not implementing Recipe

young knoll
#

Hmm?

umbral ridge
#

also this is just informative?

#

it prints out like as if you can customize it XD

ivory sleet
#
public class MerchantOffer {
    /**
     * The first input for this offer.
     */
    private final ItemStack baseCostA;
    /**
     * The second input for this offer.
     */
    private final ItemStack costB;
    /**
     * The output of this offer.
     */
    private final ItemStack result;
    private int uses;
    private final int maxUses;
    private boolean rewardExp = true;
    private int specialPriceDiff;
    private int demand;
    private float priceMultiplier;
    private int xp = 1;

    public MerchantOffer(CompoundTag compoundTag) {
        this.baseCostA = ItemStack.of(compoundTag.getCompound("buy"));
        this.costB = ItemStack.of(compoundTag.getCompound("buyB"));
        this.result = ItemStack.of(compoundTag.getCompound("sell"));
        this.uses = compoundTag.getInt("uses");
        this.maxUses = compoundTag.contains("maxUses", 99) ? compoundTag.getInt("maxUses") : 4;
        if (compoundTag.contains("rewardExp", 1)) {
            this.rewardExp = compoundTag.getBoolean("rewardExp");
        }
        if (compoundTag.contains("xp", 3)) {
            this.xp = compoundTag.getInt("xp");
        }
        if (compoundTag.contains("priceMultiplier", 5)) {
            this.priceMultiplier = compoundTag.getFloat("priceMultiplier");
        }
        this.specialPriceDiff = compoundTag.getInt("specialPrice");
        this.demand = compoundTag.getInt("demand");
    }

@young knoll

#

and more

#

isnt that it, or no am I lookingat the wrongthing?

young knoll
#

Oh yeah

#

It’s not a recipe

#

But in spigot it is

#

Because hurray

ivory sleet
#

lol thats a bit goofy

worldly ingot
#

Yeah I'm not sure why that was designated a recipe. It shouldn't have been

young knoll
#

And now

#

Recipe does not implement keyed

ivory sleet
#

maybe they make it one, not impossible?

young knoll
#

All the subtypes of recipe are keyed

#

Except of course, merchant recipe

umbral ridge
#

this should be rewritten I guess

#

made better and cleaner

young knoll
#

Yes but

#

That’s a breaking change

umbral ridge
#

it will never happen

#

xD

young knoll
#

Probably not

#

Hindsight is 20/20

ivory sleet
#

Maybe sth like interface Keyless extends Keyed

#

altho that looks just like the schrodinger cat

young knoll
#

Lol

#

Java has to add interfaces that define methods that must not be implemented

umbral ridge
#

That would be useful everywhere

hybrid spoke
#

default
abstract class
adapter

umbral ridge
#

I'd also love if java had operator overloading

ivory sleet
young knoll
#

Operator overloading can get weird

#

Sure, it makes sense on a vector

#

But what happens when I add it to player huh

ivory sleet
#

yeah in principle its just a BinaryOperator<T> x)

young knoll
#

Player * Player

umbral ridge
#

DOUBLE player xD

#

Btw any idea on how to change F3 server name?

#

I heard that it's possible with packets but I don't know much about them

ivory sleet
#

aww, u wanna replace that?

#

not crediting spigot? :c

umbral ridge
#

xD Ofcourse not, I want to put "Visit spigotmc.org and add Conclube as a friend" xD

young knoll
#

Yeah there’s a plugin for it

#

It’s a packet somewhere

umbral ridge
#

Yeah I'm looking at its source right now

#

But its confusing

ivory sleet
river oracle
#

guys when is spigot gonna break 1.8 support how many more years

#

I think we hard fork NMS here tbh we need to beable to place blocks async

umbral ridge
glad prawn
#

Chocolate

ivory sleet
#

waait holll'up, mine doesnt say that xD

glad prawn
#

yes still Choco on my phone

umbral ridge
#

hmm

#

choco changed it for 5 seconds xD

#

choco trolling

river oracle
#

you fools

#

ctrl+shift+i

umbral ridge
#

xD

river oracle
#

ctrl+s opens the file browser?

#

did you change your hotkeys

#

for your browser

umbral ridge
#

I prefer ctrl+shift+c

river oracle
#

weird

umbral ridge
#

focuses the area where you're hovering

#

try to press winKey+ctrl+shift+b

#

restarts your video driver 😍 (if you're on windows)

river oracle
#

I'm not on windows

umbral ridge
#

then alf f4

#

the only solution

river oracle
#

that just puts you into the terminal

#

I don't need to alt+f4 for that

#

super+"terminal"

#

or more super+"ter

umbral ridge
#

ubuntu?

river oracle
#

fedora

umbral ridge
#

nice

kind hatch
#

Latest fedora?

river oracle
#

ofc

kind hatch
#

Been thinking about switching to it

#

Gnome 45 really looks good

river oracle
#

its good though stay away if you have nvidia cards

#

they're removing xorg support

kind hatch
#

All good then. Got the 6950xt

river oracle
#

I'll probably have to move to mint sooner or later because of that

#

mint is staying with xorg for the next 2 years

kind hatch
#

Lol, we gonna use each other's distros.

river oracle
#

I hate cinamin but they're the only DE not removing xorg support

#

I've got 2-3 years with Cinnamon + Mint vs 5 more months with fedora+gnome

kind hatch
#

I don't dislike cinnamon, but I think it could be better. I also think vanilla gnome could be better, but at least there's tons of extensions.

river oracle
#

I can always stay on fedora 38 but then I loes security updates

kind hatch
#

I wonder if using nvidia cards will ever be as easy to use as amd cards are. Not that there aren't problems with amd cards, but at least they work on the majority of distros.

river oracle
#

but they never will

kind hatch
#

Didn't the nouveau driver get some updates recently? I thought with the recent stuff nvidia drip fed us got some better results out of the open source driver.

river oracle
#

you'd have better odds having a toddler take down a heavy weight boxer

river oracle
#

you might as well buy a low end card if you want low end results

#

I love linux so much it makes me wish I knew about it before I bought parts for my new system

kind hatch
#

Same. I got my graphics card swapped because I switched over permanently.

#

Just got tired of dealing with the issues.

river oracle
#

first thing I did when I got my laptop was uninstall windows and install linux

#

granted I have to dual boot because otherwise I wouldn't beable to install their invasive ass testing software but I have it confined to a single ssd vs my entire system

kind hatch
#

Also in the same boat except my spare windows ssd is for games only. Only problem I have with dual booting is the auto installed drivers fucking up my peripherals when switching back into linux.

#

Mouse sense is not where it should be, keyboard seems to lose it's profiles, and I have to double check audio sometimes.

river oracle
#

I used to play genshin (unfortunately) and I even got that working on linux

kind hatch
#

I try whatever I can first on linux and if it works, great. However there are just some games that aren't there. Rust being one of them.

river oracle
#

there is a project which I am at liberty to not name

ivory sleet
#

ah alr

river oracle
#

which deals with this issue

kind hatch
#

Who owns Genshin?

river oracle
#

Mohoyo -> Chinese -> Chinese Government

kind hatch
#

At least it's not Riot Games

ivory sleet
#

was gonna say x)

river oracle
# ivory sleet was gonna say x)

I got it to work very well and that project is still alive and well, however, as you can imagine they like to keep its userbase very small. They switch the project name and location every 6 months

#

its hard to keep track of if you don't know what you're looking for

kind hatch
river oracle
# ivory sleet aahh

it works by essentially disabling the anti cheat but feeding fake specs that you are using it. It only works on linux and they don't provide windows support because they don't want people to cheat

kind hatch
#

I feel you though.

ivory sleet
#

sounds like emulator stuff

river oracle
ivory sleet
#

ah I see

river oracle
#

it applies mutated DLL files

#

patched*

ivory sleet
#

wait this genshin or riot?

river oracle
#

genshin

#

Riot sucks who cares about them

#

I quit genshin, but I never started with Riot

#

I can't believe I need a rootkit on my system to play their games

ivory sleet
#

lol

#

I mean they have Valorant 🥺

kind hatch
#

Did they add it to League or is it still only for Valorant?

river oracle
kind hatch
#

Facts

river oracle
#

I can just play CSGO

#

which is legit pretty much the same

#

its just owned by valve

kind hatch
#

CS2 is rough though. At least with my internet connection. Can hardly play it now. :/

river oracle
#

CS2 I've noticed my connection is much laggier

ivory sleet
#

fair, i just really like the val community, or well its fun to partake in it at times :>

river oracle
#

I wonder what they did with protocol

kind hatch
#

Subtick sends far more packets than the old one.

#

or

kind hatch
#

it was more per packet

#

One of the two

river oracle
#

i see

kind hatch
#

But it's def noticable

ivory sleet
#

there is no way of changing it?

river oracle
#

no :(

#

source 2 more like source lame

ivory sleet
#

lol

river oracle
#

I miss cobblestone man 😭 I loved that map it was my fav, but instead I'm stuck playing the garbage they added back instaed

kind hatch
#

At least the replay tools are finally usable and not stuck on some source 1 bs that would lag and possibly crash the game when trying to scrub through video.

#

I'm hoping by the time I move again the game will be in a better state so I can play it when I have good internet again.

river oracle
#

10 to go

hybrid spoke
#

ive made hundreds of dollars minus in csgo

river oracle
#

I'm only -10

hybrid spoke
#

-800 iirc

river oracle
#

I'm a modern game companies worst enemy, I don't care about cosmetics

hybrid spoke
#

only once a gold

#

sucks

kind hatch
#

Never pulled a gold. 😦

hybrid spoke
#

you have to buy it right

river oracle
#

most MMOs are just riddled with micro transactions now adays

ivory sleet
#

true

hybrid spoke
#

most mmos are p2w

#

but wings are cool anyways

#

even without stats

river oracle
#

my prof wants me to wirte a rhetorical analysis on one of my research sources

#

its so lame bro this is an academic journal

#

itss just facts and stats

#

the author invokes ethos I think i'm going to have written that like 30 billion times by the end of this

inner mulch
#

is there a tutorial on how i can use my plugin as an api for another plugin?

inner mulch
#

?

inner mulch
lethal coral
#

you could either fork the plugin or see if the plugin's api is accessible

noble flume
#

What is the citizens build for 1.20.1?

#

I cannot find it

rotund ravine
#

Use latest

wet breach
quaint mantle
#

Anyone know how to check if a minecraft name is valid?

lofty badge
#

guys, i need some help. i have C# script:

        {
            spriteRenderer.sprite = ShipSprite;
            transform.Translate(Vector2.right * ShipSpeed * Time.deltaTime);

            if (Input.GetKey(KeyCode.Space))
            {
                rb.AddForce(Vector2.up * ShipForce, ForceMode2D.Impulse);
            }
        }```
it's working too bad, how i can make ship from geometry dash (game)?
rotund ravine
rotund ravine
quaint mantle
#

since code accepts offlineplayer

icy beacon
icy beacon
shadow night
#

that's like double unrelated

quiet ice
#

I did sneak a few galimulator modding questions on this discord in the past ;)

chrome beacon
kindred gull
#

Hello I wanna make a discord bot with my pluin (javacord).

I have this error :

java.lang.NoClassDefFoundError: org/javacord/api/DiscordApiBuilder
    at fr.cedricxbg.rpww3.Main.onEnable(Main.java:23) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:546) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:460) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.reload(CraftServer.java:968) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at org.bukkit.Bukkit.reload(Bukkit.java:833) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchCommand(CraftServer.java:877) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchServerCommand(CraftServer.java:862) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.dedicated.DedicatedServer.bf(DedicatedServer.java:412) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:388) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1197) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1014) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:303) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: org.javacord.api.DiscordApiBuilder
    at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:147) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:99) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
    ... 18 more

And my line 23 is this :

DiscordApi api = new DiscordApiBuilder().setToken(getConfig().getString("bot.token")).login().join();

Can anyone help me pls ?

dry hazel
#

you need to shade it

kindred gull
dry hazel
#

via your build system

tawny talon
#

Hey, I'd like to create a custom mob plugin but I have an issue, I'd like to edit the values before spawning the entity, does anyone know how could I do it?

kindred gull
dry hazel
#

maven-shade-plugin for maven iirc and shadow for gradle

hazy parrot
#

why do you use javacord in first place

kindred gull
tame wolf
dry hazel
#

so just use the jar with the -all classifier

#

you should also specify a relocation rule to move javacord to your package

quiet ice
#

You should also define shadowJar a dependency of build

#

Just to not cause confusion

tawny talon
#

but I don't want to use directly #spawnEntity, more like I add the desired values to the mob and then spawn it with those values

kindred gull
quiet ice
#

If it is a double-quote (this looks like a single-quote but could be my font), yes

#

Also you probably don't need a dependency block in your shadowJar block

kindred gull
#

so I let my gradle.build file like that ?

quiet ice
#

Well you need to relocate still

kindred gull
#

so what I need to put into the quotes ?

quiet ice
#

relocate("source.package.here", "com.example.myproject.shaded.package.here") for example

#

Also make sure to have the javacord dependency as API or implementation, but not as compileOnly or compileOnlyApi

quiet ice
#

While source.package.here is the javacord package

quiet ice
rotund ravine
kindred gull
dry hazel
#

just org.javacord

quiet ice
#

No, it needs to be the package name, not the artifact

dry hazel
#

and preferably you'd select a destination package specific to javacord

#

i.e. me.example.libs.javacord

kindred gull
dry hazel
#

yes

kindred gull
#
relocate("org.javacord","fr.cedricxbg.rpww3.shaded.javacord")
#

I can put that in my gradle.build ?

dry hazel
#

can remove the libs part if you're gonna put shaded in the package, but yeah

#

make sure it's in the shadowJar task configuration closure

kindred gull
#

currently I have this

#
shadowJar {
    dependencies {
        include dependency("")
    }
    relocate("org.javacord","fr.cedricxbg.rpww3.shaded.javacord")
}
dry hazel
#

you can remove the dependencies closure

kindred gull
#

ok

#

I try to build the plugin.jar

tawny talon
wet breach
kindred gull
#

@dry hazel same error

rotund ravine
#

Save all the options and change the entity on spawn @tawny talon

tawny talon
rotund ravine
#

M8

#

Don’t spawn before you have all the changes you want

#

Run spawn entity when they have finished ur gui settings and click spawn in it

tawny talon
#

Lets say I want to modify a Zombie damage

#

Code would look something like
Zombie zombie = World#spawnEntity(etc)

rotund ravine
#

Obviously you would have that saved somewhere

tawny talon
rotund ravine
#

Davy

#

I am telling you

#

To save the settings you want to change

#

Before

#

Spawning

#

Make your own POJO or smth

#

Then use the consumer in spawnentity once the user is done

#

Don’t overthink that you need an actual entity object

dry hazel
#

with the -all classifier?

tawny talon
rotund ravine
#

Yes

kindred gull
wet breach
# rotund ravine Yes

They probably could just extend the entity classes to create some virtual entity to make it easier to plug values in lol

dry hazel
wet breach
#

Regardless either way its not overly difficult for the solution

lost matrix
wet breach
#

I just meant using a virtual entity to hold values without having to create custom methods and types. On spawning you would transfer the values over

#

And then get rid of the virtual entity if its not needed anymore or keep it around if its needed

lost matrix
#

Ah so like a template

wet breach
#

Yeah exactly

kindred gull
dry hazel
#

no?

dry hazel
#

shadowJar produces a JAR with an -all suffix

lost matrix
#

But... you dont want the jar with the -all suffix.
The one that has no suffix should be used

dry hazel
#

-all is the shaded jar

lost matrix
#

Yes but there are a bunch of maven goals that could be missed out, depending on what you are doing.
No suffix is the final jar

rotund ravine
#

Gradle 💪🏻

dry hazel
#

this is gradle, not maven

rotund ravine
#

Though you can do the same there

lost matrix
#

Ah so shadow

ivory sleet
rotund ravine
#

Gradle > maven

#

Let the channel burn

cinder abyss
#

Hello, what is the event when an entity attacks an entity (or a player)?

rotund ravine
#

?jd-s

undone axleBOT
rotund ravine
cinder abyss
rotund ravine
#

Hint it has Damage in its name

cinder abyss
rotund ravine
#

A player is an entity

hushed spindle
#

EntityDamageByEntityEvent

rotund ravine
hushed spindle
#

i know

cinder abyss
#

okay thanks

hushed spindle
#

no need to be cryptic about a simple question like that

rotund ravine
#

Do u like pickles? @hushed spindle

cinder abyss
rotund ravine
#

No, but it’s an easy way to learn to navigate javadocs

hushed spindle
#

grrr i hate pickles nasty gross too sour

cinder abyss
rotund ravine
#

🤔

hushed spindle
#

pcikled onions tho 🤤

rotund ravine
hushed spindle
#

do it i'd hate that

#

jam your pickle in my mouth

#

do it

#

liberal

cinder abyss
#

hmm

hushed spindle
#

with your big strong hands

rotund ravine
#

Lol

hushed spindle
#

you're not spigot related

cinder abyss
#

😢

rotund ravine
rotund ravine
#

As long as we answer questions we can be a little silly

cinder abyss
#

in this channel

cinder abyss
#

we're all idiots!

hushed spindle
#

yes we are

rotund ravine
#

Link me that thread

#

Been a while since i read it

cinder abyss
#

I'll search

rotund ravine
fathom oak
#

hello im in troubles trying to install citizens plugin, i cant access to that spigot web

sterile breach
#

Hello I have a question, rename a plugin .jar to .rar and edit plugin.yml to change permssion its illegal like decompilation? or I can?

fathom oak
#

you can do whatever, and whats the sense of doing that? you generate the jar file and also a folder

cinder abyss
cinder abyss
#

but it's funny 🤓

kindred gull
lost matrix
kindred gull
#

I click on the gradle icon at my right

#

then Tasks > build > build

rotund ravine
#

Did you make build depend on shadowjar?

kindred gull
# rotund ravine Did you make build depend on shadowjar?

here is my gradle.build file

plugins {
    id 'com.github.johnrengelman.shadow' version '8.1.1'
    id 'java'
}

group = 'fr.rpww3'
version = '1.0'

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compileOnly "org.spigotmc:spigot:1.20.1-R0.1-SNAPSHOT"
    implementation 'org.javacord:javacord:3.8.0'
}

shadowJar {
    relocate("org.javacord","fr.cedricxbg.rpww3.shaded.javacord")
}
 
sourceCompatibility = targetCompatibility = '17'
compileJava.options.encoding = 'UTF-8'
setLibsDirName('../server/plugins')
rotund ravine
#

You did not

#

Either hit the “shadowJar” task instead of build

#

Or make build depend on shadowJar

kindred gull
#

okk

heavy mural
#
Location cornerLocation = new Location(world, playerChunk.getX() * 16, player.getY() + 14, playerChunk.getZ() * 16);

ItemDisplay chunkBorder = player.getWorld().spawn(cornerLocation, ItemDisplay.class);
ItemStack border = new ItemStack(Material.KNOWLEDGE_BOOK);
ItemMeta borderMeta = border.getItemMeta();
borderMeta.setCustomModelData(1);
borderMeta.addEnchant(Enchantment.LUCK, 1, false);
                    borderMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
border.setItemMeta(borderMeta);

chunkBorder.setItemStack(border);
chunkBorder.setInterpolationDuration(100);
chunkBorder.setInterpolationDelay(-1);
Transformation transformation = chunkBorder.getTransformation();
transformation.getScale().set(16, 16, 16);
chunkBorder.setTransformation(transformation);```

Hey, I am trying to make this Knowledge_book transform from it's original size to Scale (16, 16, 16) with interpolation over a duration of 5 seconds.

Right now it instantly scales to (16, 16, 16), instead of over 5 seconds. What do I do wrong?
upper hazel
#

Is it possible to call your event via EventHandler anttation?

kindred gull
# rotund ravine Or make build depend on shadowJar

now I have this err:

java.lang.ExceptionInInitializerError: null
    at fr.cedricxbg.rpww3.shaded.javacord.api.DiscordApiBuilder.<init>(DiscordApiBuilder.java:33) ~[?:?]
    at fr.cedricxbg.rpww3.Main.onEnable(Main.java:23) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugin(CraftServer.java:546) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.enablePlugins(CraftServer.java:460) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:588) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:413) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:250) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:972) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:303) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.IllegalStateException: No DelegateFactoryDelegate implementation was found!
    at fr.cedricxbg.rpww3.shaded.javacord.api.util.internal.DelegateFactory.<clinit>(DelegateFactory.java:98) ~[?:?]
    ... 13 more
young knoll
#

You gotta delay it