#help-development

1 messages · Page 1062 of 1

torn shuttle
#

right

#

so I'm not doing that

#

the whole point of the plugin is to make the entire thing completely plug and play for custom models

#

you put it in, you don't even configure it and it immediately just works

young knoll
#

Well they should just have every port open then

#

100% safe

pseudo hazel
#

xD

torn shuttle
#

going to hope some staff sees this in a bit otherwise I'll mail them I guess

torn shuttle
eternal oxide
#

So this plugin is going to upload to your server?

torn shuttle
#

yes

eternal oxide
#

Good luck with that

#

I forecast hacked within a day and hosting child p

torn shuttle
#

maybe you're not aware but there's already plenty of plugins autohosting resource packs

eternal oxide
#

auto hosting remote?

torn shuttle
#

yeah

eternal oxide
#

Very scary

torn shuttle
#

and if it's a problem I'll turn it off, whatever

young knoll
#

What plugins do that

torn shuttle
#

hm I think itemsadder is doing it or at least was doing it

#

there were some others, I have a master list somewhere

young knoll
#

Seems like it would be very hard to stop illegal stuff being uploaded

torn shuttle
#

that's what safe harbor provisions are for

young knoll
#

Gotta get a hold of discords “mostly accurate robot hamsters”

eternal oxide
#

pretty sure you'd not quallify for safe harbor

torn shuttle
#

because?

eternal oxide
#

you would have to provide reporting systems and methods of takedowns.

torn shuttle
#

not a problem ,can be done by email

eternal oxide
#

Well good luck. Its a risk I'd not take

torn shuttle
#

that's fine, I'm not asking you to take it for me

restive mango
torn shuttle
#

yeah I went and checked in european law, article 12 of directive 2000/21/31/ec describes exactly what this does and is very clearly defined

restive mango
#

like how do i get the uuid

#

so i can then get the offline profile

torn shuttle
#

Article 12

"Mere conduit"

  1. Where an information society service is provided that consists of the transmission in a communication network of information provided by a recipient of the service, or the provision of access to a communication network, Member States shall ensure that the service provider is not liable for the information transmitted, on condition that the provider:

(a) does not initiate the transmission;

(b) does not select the receiver of the transmission; and

(c) does not select or modify the information contained in the transmission.

#

as the host, I don't initiate it, I definitely don't select who it is for and I certainly don't modify it in any way

#

and also article 13

#

but I don't want to spam chat

#

basically as long as I allow takedowns and don't modify the data I'm good

#

both of which are more than fine by me

restive mango
#

anyone able to answer my q

torn shuttle
#

I think I'll also add a check such that any individual file in the rsp can't be larger than a certain size on top of the already planned limit of a max size for the zipped file so that basically anything larger than pixel art will be too large for it

young knoll
#

What about a zip bomb

torn shuttle
#

presumably that would get caught when checking the contents

restive mango
nimble bear
#

Please let me know if anyone could help! (i dont want to interupt this haha)

torn shuttle
#

ah man my own rsp would definitely be too large lol

young knoll
#

Is your limit smaller than Minecraft’s limit

torn shuttle
#

what's mc's limit?

#

I don't have a set number yet I was looking up what a good size might be

young knoll
#

I think it’s 250mb now

torn shuttle
#

oh I was going much lower than that for sure

#

I have a png of a map I use in an adventure I made that is 800kb and I think it's the largest one

young knoll
#

It’s actually 250 MiB

#

Because Mojang is sponsored by ISPs

torn shuttle
#

maybe 1MB would be the limit I would go with

#

but a 1080p jpeg would easily fit in there

#

png makes these files really big

young knoll
#

Now I wonder

#

Can I inject something very early in the netty pipeline to allow serving resource packs on the same port as the server

torn shuttle
#

it would be real neat if servers could serve their own rsps

#

without going through hoops

young knoll
#

I mean opening an extra port isn’t too bad

#

But I’ll have to mess with netty to see what I can do

torn shuttle
#

it disqualifies a solid 70% of servers

#

if not more

#

I think I'll do a behind the scenes file structure check and not bother with a size check beyond the total rsp size

#

I don't think this would be an interesting system to try to attack anyway, between keying ips to a single rsp, the fact they get autoremoved if the server doesn't phone in and it generally being very obscure I don't think people will bother

young knoll
#

Use better hosts :p

#

Bloom allowed extra ports

torn shuttle
#

it's not even about being with a host that allows it or not, it's about the inconvenience of having to set it up

nimble bear
#

Does anyone know how to fix SCOREBOARD'S from not working? I have a bunch of code for scoreboards but it stopped functioning as fixed and added more things!!

echo basalt
#

Quick question

#

Does chat color formatting reset when I change colors?

#

I think my minimsg converter is fucked

torn shuttle
#

I think so

echo basalt
#

easy fix

worthy yarrow
#

Wdym by formatting?

echo basalt
#

just &r when changing colors

#

does text go from bold -> not bold if I change the color of it

torn shuttle
#

I think so

worthy yarrow
#

Ah yes I believe so

kind hatch
#

It does in fact do that.

slender elbow
young knoll
#

I can’t imagine it’ll be pretty anywhere

slender elbow
#

I mean

young knoll
#

Just shoving an interceptor into the netty pipeline

#

Fun times

pseudo hazel
#

why is your whole plugin in the start game command

#

i cant see whats wrong right away

nimble bear
#

idk ;-; im new to plugins stuff

young knoll
#

Is there some proper way to get the public ip of the server or do I need to send a request to some external site to do so

torn shuttle
#

well this is intersting, every time I zip my resource pack the sha1 changes

#

either I don't know as much about sha1 as I thought or I don't know enough about zipping

#

or I have some weird bug here

slender elbow
young knoll
#

Alright then, web request it is

echo basalt
#

like timestamps n shi

torn shuttle
#

that is it

#

that uh

#

complicates things

echo basalt
#

just set it all to Integer.MIN_VALUE

#

good ol' resourcepack zipped in 1980

torn shuttle
#

well now

#

how do I want to fix this

#

I'm not a huge fan of this issue ngl

young knoll
#

Why use the min value when you can use the max

#

I love time travelling files

torn shuttle
#

tomorrow's software, today

#

yeah this definitely modifies it such that every single file is set to last modified when zipped with the current method

#

I might have to just extract the zip, compare each individual file to the file that is to be zipped and check if the contents are the same

#

what a bummer

wet breach
torn shuttle
wet breach
#

it does

torn shuttle
#

hmm

#

guess I should try to replicate that

nimble bear
#

im begging for help spigot

drowsy helm
#

whats your question

nimble bear
#

Sorry i just copied and pasted it from earlier haha

dawn flower
#

what packet makes a villager shake their head

drowsy helm
#

I havent used scoreboards in ages but don't you need to assign a team

#

also that code should be in a manager class

#

not all in the command

dawn flower
drowsy helm
dawn flower
#

no

torn shuttle
#

damn it

#

the zipping itself modifies the files

#

or not, weird

echo basalt
#

read every byte and compare

torn shuttle
#

byte me

#

I mean this has to work

#

java thinks it works

#

the OS does not

#

hmmmm

#

this runs after copy so it shouldn't be getting modified further

torn shuttle
#

buddy

#

this is some cursed shit i'm doing right now

worthy yarrow
#

Care to share?

worldly herald
#

Hello, one of my plugins is vanished, someone can help me?

torn shuttle
#

aw yeah baby I 1970 what a time to be making minecraft resource packs

#

we love that

wet breach
#

lol

torn shuttle
#

innovating in method names as well

worthy yarrow
#

Snap

#

Oh

wet breach
torn shuttle
#

all public all the time babyy

autumn ingot
#
                EnderDragon enderDragon = player.getWorld().getEnderDragonBattle().getEnderDragon();
                CraftEnderDragon craftEnderDragon = (CraftEnderDragon) enderDragon;
                EnderDragonPhaseManager enderDragonPhaseManager = craftEnderDragon.getHandle().getPhaseManager();

                EnderDragonPhase<? extends DragonChargePlayerPhase> chargePhase = new DragonChargePlayerPhase(craftEnderDragon.getHandle()).getPhase();
                DragonChargePlayerPhase chargeInstance = (DragonChargePlayerPhase) chargePhase.createInstance(craftEnderDragon.getHandle());
                chargeInstance.begin();
                chargeInstance.setTarget(new Vec3(swatted.getLocation().getX(), swatted.getLocation().getY(), swatted.getLocation().getZ()));
                enderDragonPhaseManager.setPhase(chargeInstance.getPhase());
                enderDragonPhaseManager.setPhase(chargePhase);

does anyone know why this code isnt working? my goal is to force the ender dragon to charge at a player, but the console keeps saying "Aborting charge player as no target was set." like a second after the code runs. ive tried googling everywhere but i cant find anything

#

i feel like im so close to solving it but i just cant figure it out

torn shuttle
#

this is literally re-zipping several resource packs so i'm going to assume they're about as safe as the $100 bill I left outside 3 weeks ago

wet breach
#

lol

worthy yarrow
#

leaving a 100$ outside may be safer than you think

wet breach
#

well the vulernability is only in code really. IE zip slip for example where if the program is going to be made public and you just assume the paths of the zip archive it would be easy for a malicious zip to fool the program on that by using relative paths

torn shuttle
#

I don't really see a reason to care about that, it's a plugin that aggregates resource packs and it's on admins to make sure they don't have stuff running maliciously on their server in the first place, it only scans the directory of their mc plugins

wet breach
#

for example, a zip can have the path of /../program this would cause the file to be extracted in the next directory higher lol

torn shuttle
#

if that's compromised then SOL

wet breach
#

well up to you really, its your stuff you know it better then me, was just only reminding of such things was all 😛

shadow night
#

Can we prevent that

wet breach
#

yes of course

#

you don't assume the relative path stored is in fact correct

torn shuttle
#

well now

#

that's interesting

#

sha1 does not care for the metadata of the file being analyzed which... yeah that makes sense considering how I am ingesting it

#

good to know though

#

seems like a fun attack vector

wet breach
#

lol

#

well sha1 is known to be vulnerable

torn shuttle
#

so you can have sha1 signed files and mess with the metadata to be a real stinker

#

meh I'm only using it as a basic checksum

shadow night
#

what is this discussion about tho

torn shuttle
#

it's about how I've hacked into your computer and am looking at your homework folder right now

wet breach
# shadow night what is this discussion about tho

the signature for zips for resource packs. They had issues of their pack giving different sigs I am guessing because the metadata of the files in said zip changed, IE the timestamps on the files

shadow night
#

tf

wet breach
#

so even though the files are the same, because the timestamps are different, the zip is different. The only thing you can do in this case is either set all the timestamps to the same thing all the time, or remove the metadata before putting the file in the zip archive

torn shuttle
#

except it doesn't matter for the actual zipped file

wet breach
#

right which makes sense

torn shuttle
#

so you may have a timestamp saying you modified it 3 seconds ago and it will still report the same sha1 as 3 years ago, but if any of the contents say the were modified with a different timestamp then the sha1 will report a different result even if the contents are identical

#

yeah not saying it doesn't make sense

#

just catching them up

wet breach
#

ah right ok

dawn flower
#

what unicode is that

#

it looks like but is way smaller

wet breach
dawn flower
#

how did u..

#

ayo

torn shuttle
#

that's clearly U+25B6 you can tell at a glance

dawn flower
#

oh wait it aint

wet breach
#

oh its a different one

dawn flower
#

yeah

wet breach
#

try that one

blazing ocean
shadow night
#

lmao frostalf

#

do you know all of unicode

torn shuttle
#

you don't?

blazing ocean
#

i know a good ton of unicodes but not that much lmao

dawn flower
wet breach
#

I just have a list for symbols, this used to be a normal thing to have on hand?

worthy yarrow
#

whats unicode

#

never heard of that

blazing ocean
shadow night
torn shuttle
#

I keep a list of everything everyone knows

#

conveniently on the cloud

#

and use google to look it up

#

it's very efficient

dawn flower
blazing ocean
#

i keep a list of everyone who has ever lived and their knowledge

wet breach
dawn flower
#

it's that

#

how can u just know

worthy yarrow
shadow night
#

I personally keep a hashmap of objects

worthy yarrow
#

👍

blazing ocean
shadow night
#

Useful thing

torn shuttle
#

he's objectifying people

blazing ocean
#

skull

torn shuttle
wet breach
worthy yarrow
blazing ocean
#

MutableMap<Any, Any>

shadow night
#

I hope whoever made up "Any" burns in hell

dawn flower
blazing ocean
shadow night
dawn flower
#

isn't there on in java as well?

blazing ocean
#

nope

dawn flower
#

var t = "test"

blazing ocean
#

type changing shit

wet breach
dawn flower
blazing ocean
#

bc only js allows you to fuck up that bad

shadow night
shadow night
blazing ocean
blazing ocean
dawn flower
#

js doesnt even follow its own rules, u can literally forget a ; and js is like "i got your back" and lets it pass

shadow night
#

Yk why the any type makes no sense? You can have a list of objects, that makes sense, but how can you have a list of anies? What the fuck does that mean?

dawn flower
blazing ocean
shadow night
blazing ocean
shadow night
worthy yarrow
shadow night
blazing ocean
#

yea

torn shuttle
dawn flower
wet breach
blazing ocean
#

that's why you do <T : Any> when you want a non nil type

worthy yarrow
#

well idk how you could map with a null value / key anyway kek

dawn flower
#

u cant make a one liner program in kotlin

torn shuttle
#

you just need to see things through my enlightened centrist eyes

blazing ocean
shadow night
#

I should make a gradle plugin that makes semicolons optional in java

dawn flower
blazing ocean
#

semicolons still exist

dawn flower
#

one benefit for ;

#

oh

blazing ocean
#

you just don't end lines with them

shadow night
dawn flower
#

so js style

wet breach
worthy yarrow
#

Been in the queue 7 minutes now

#

Siege is ded

blazing ocean
#
  • with kotlin most operations are beautiful functional one liners
dawn flower
blazing ocean
#

it just says it's redundant

shadow night
worthy yarrow
torn shuttle
#

everyone acts like js is the worst until they remember python syntax

shadow night
#

Configuring IJ was funny

echo basalt
#

I got the ktlint plugin and half my IDE turns yellow if I leave a trailing comma

dawn flower
#

python is 60% english

blazing ocean
worthy yarrow
#

Isn't python like business standard language right now?

wet breach
torn shuttle
#

I'm fine with using it with nodejs tbh

worthy yarrow
torn shuttle
#

it's harmless

shadow night
#

It was beautiful

wet breach
#

its not harmless

torn shuttle
#

I wouldn't base anything serious and longterm on it but it's fine

#

it can be a bridge to my ai support just fine

wet breach
#

javascript introduces vulnerabilities on a back end system if you are not aware of it

wet breach
#

javascript isn't going to report issues either and whether or not you can spot issues in javascript code is dependent on the linter you use

shadow night
#

I use java in frontend ui

wet breach
#

also javascript doesn't log all errors or issues

blazing ocean
#

yea raydan you're also not normal at all

wet breach
#

or if at all

blazing ocean
#

i love go, rust and kotlin for backend

shadow night
blazing ocean
shadow night
#

I'm the average person

blazing ocean
#

you are not

shadow night
worthy yarrow
#

I used javafx to make a notepade application.. That was great! 👍

blazing ocean
#

i have a template actually

torn shuttle
#

I'd be fine with using rust if I didn't have to learn it first

#

alright cool well that was way too long to get the sha1 working, fantastic

blazing ocean
torn shuttle
#

not calculating it bud

#

well damn, now it's consistent between reloads but not between restarts, what is even going on

torn shuttle
#

ok now I changed nothing and I think I fixed it

#

perfect

#

love that for me

#

no wait I broke it again

grand marsh
#

so im slowly teaching myself how to code with some help with a friend. I asked him if it was possible to create a plugin i had in mind and he gave me a list of things to do to try to make it one of them being "Define a variable for the percent chance" Ive looked it up online and have found many diffrent things and cant seem to choose the right one. could someone give me a hand?

shadow night
#

?learnjava

undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programming—great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! 🎉

shadow night
#

This should help

grand marsh
#

ty

wet breach
#

the right one is which ever works for you the way you need it to

#

more requirements you impose it to meet the smaller that list will be to choose from lol

grand marsh
wet breach
#

well it is always recommended to learn the basics of course

#

without the basics you won't understand or be able to do the advanced stuff as they are extensions of the basics

grand marsh
#

i see that now. thank you

grand marsh
torn shuttle
#

I can't believe he's drunk again

grand marsh
#

?

torn shuttle
#

dw about it, people who know know

alpine urchin
torn shuttle
#

somewhat weird question, I'm using a nodejs backend to manage resource packs, if I get a request from a client to download the resource pack how can I send that to the player? I should be able to query the nodejs without having to create a permanent link somewhere for download? Or do I need to do that? I've never really messed with this

#

I can create a permanent link but I'd rather avoid it if I can

#

can node create a similie of a link that can be used?

shadow night
#

why am I unable to understand this

torn shuttle
#

understand what

shadow night
#

Your sentences

#

My brain is refusing to understand

normal thicket
torn shuttle
#

I got nodejs to read requests / uploads / pings from a plugin, I want to know if I can also use it to send dl "links" to the rsp to clients

#

I feel like it should be possible

normal thicket
#

I mean I am no nodejs expert but it sounds lile something achievable

torn shuttle
#

I do have a website and I can host it there but eh I wanted to avoid that if possible

normal thicket
torn shuttle
shadow night
torn shuttle
#

because it's a nodejs backend and not a website

wet breach
normal thicket
#

isn't there a website where you can host resource pack? idk

#

or I don't understand something with links

shadow night
wet breach
#

IE, they don't need a webserver

#

they just have a mechanism to accept the request

shadow night
#

This is absolute gibberish to me

torn shuttle
#

yeah I have a sha1 of the server and the plugin can use an identifier to get a pseudolink, just wondering how I would do that

normal thicket
torn shuttle
#

can I just dump a url using the same format I am doing my pings to nodejs and try to hack together a response that sends the zipped file?

wet breach
#

you will need to look at the http standard in terms of sending responses or files

shadow night
#

...or just host a simple http server?

wet breach
torn shuttle
#

buddy it's fine if you don't get it, you don't have to participate

shadow night
#

yeah my brain is absolutely deep frying

torn shuttle
wet breach
#

not your fault if some bot decided to browse it >>

torn shuttle
#

oh wait that's a good point

#

I lost sight of the fact this needs to have an identifier

#

now how do I fit that in

wet breach
#

well you would add it at the end of rsp

#

and then your backend decides to do something based on the identifier presented

torn shuttle
#

i'd need one per server, this is a public service

#

not sure I can dynamically register that

#

probably can though right

#

or just listen to something more generic

wet breach
#

I am not sure why you can't do it dynamically?

torn shuttle
#

yeah I've just never done it, I figure it might be possible

wet breach
#

also note you don't actually need the files stored in a directory either, you can store the files in a DB as well and fetch them via query to give to the response

torn shuttle
#

I'm doing stuff like app.post('/still_alive', ... right now so I guess I might need a different kind of listener

wet breach
#

only adding this, because typically the easiest route is to store files in a directory that resembles the url

torn shuttle
#

I was considering DBs to be real but I DQ'ed them because they make EU compliance harder

wet breach
#

or naming the files in question the same as the identifier 😛

wet breach
torn shuttle
#

takedowns and viewing data

#

just easier if it's just a text file and a rsp

wet breach
#

it won't be a post request

wet breach
#

its not like they can be vague about it, or tell you how its being downloaded

torn shuttle
#

it just makes this more annoying to deal with for relatively little gain right now

#

I'll do it if I'm suddenly mass serving a large audience but right now I just want to worry about getting it off the ground

wet breach
#

anyways, the get request is what you need to parse, as it contains the url

#

you can validate on the first part, being rsp so you know they want a resource pack

#

and then you can look after rsp for the identifier

#

so you know which file to send back

#

or data I should say since you can just create the file on the fly as long as you have the bytes in question 😛

umbral ridge
#

as long as you have whiskey

torn shuttle
#
app.get('/rsp_:sha1', (req, res) => {
    const sha1 = req.params.sha1;
    console.log(`Received request for sha1: ${sha1}`);
});

something like that right

#

eh wait that doesn't sound right

umbral ridge
#

is that vue.js

torn shuttle
#

does that actually work as a route parameter?

#

that's whacky

blazing ocean
#

you just send them a file and, ideally, a hash too

#

the client needs to be able to download the pack itself, the server cannot just send the actual pack over

#

just a url

umbral ridge
#

you could send headers instead

blazing ocean
#

what

shadow night
#

I wish mc implemented some pack sharing protocol

blazing ocean
#

it would just be sending a byte array

#
  • hash and uuid
wet breach
blazing ocean
#

yea

wet breach
#

but, the link in question doesn't need to be a permanent link or a static link that needs to be defined

#

backend wise

blazing ocean
#

yeah?

#

i don't get what you are trying to tell me

wet breach
#

you are implying the server can't send the actual pack, which is what is done with the url portion. The MC server is the one that provides the hash that is suppose to match the file that is downloaded from said URL

blazing ocean
#

i said that the server can only send a url to the pack

#

with "the actual pack" i meant the file

wet breach
#

ah, that clarifies stuff but that isn't what was being questioned though by magma

blazing ocean
#

yea i didn't quite understand his question

wet breach
#

they obviously don't want to setup a standard webserver to provide the file

#

they already have a backend mechanism that can listen for requests

blazing ocean
#

okay yeah

#

i just do this

wet breach
#

right, and I was explaining that the request that would be sent to the backend is a get request with the url

#

and they could use said url to know which file to send back

blazing ocean
#

that is how pack servers work

torn shuttle
#

that's what I wanted to know

#

how to do it

wet breach
#

and the code necessary is what they seemed to come up with, the parameter they need is the identifier in this case the hash works just fine

#

thus no static linking in the code is necessary

#

now, they can just drop the files in a central place and their backend should be able to serve it up based on the get request 🙂

blazing ocean
#

you send the client a resource pack request with url, uuid, hash, prompt and whether it is required or not. the client then just sends a get request to that url with some headers related to the actual game (user, uuid, version etc, very useful for stuff like multi-version packs or something), which should just return a zip

#

my server builds my resource pack for me, handles the zip file and the pack server by itself

#

no need to do anything :)

wet breach
#

exactly uwu

torn shuttle
#

yeah and soon that will be the case for anyone running my software too

wet breach
#

well at least you understand now rad

blazing ocean
#

ig

wet breach
#

Raydan is still trying to process and is frozen

#

they might need to just kill the process for now it seems XD

torn shuttle
#

ok I really need to go to the gym now or I won't go at all

dawn flower
#

can u change the block limit in negative y

floral drum
#

no, it's hardcoded in the client

dawn flower
#

smh

#

why

blazing ocean
#

mojank

dawn flower
#

im convinced mojang hates us

blazing ocean
floral drum
#

ask mojang

dawn flower
#

what about positive y

floral drum
#

nope

#

all hardcoded into the client due to arrays, such as the chunkSections array

dawn flower
#

ah

eternal night
#

what

thorny cypress
vast ledge
#

?notwork

#

TF was the command

eternal night
#

do you just want to change the max and min height limit?

dawn flower
#

yea

eternal night
#

that is obviously doable lol

#

the values are controlled by datapacks

dawn flower
#

arent datapacks just commands

eternal night
#

no

blazing ocean
#

they also contain data files

eternal night
#

that is functions

dawn flower
#

ah

eternal night
#

^

thorny cypress
#

Yes, unfortunately it no longer works since then as soon as I enter my /setup setdungeon, I mark a block with a left click but that no longer works and the dbug says the mode is activated when I execute the command but then when I click on something it is no longer active

dawn flower
#

can u do tiwihtout a datapack

eternal night
#

no

dawn flower
#

dam

eternal night
#

but it is certainly not hardcoded on the client

#

(as kinda obvious by the fact that the nether and end dimension have different min and max heights than the overworld)

floral drum
#

oh shit I completely forgot about that, I may have been thinking of older versions

eternal night
#

Maybe we are all just too old Sadge good old 1.8 didn't have this data driven shit

floral drum
#

yep

#

honestly I see in bukkit stuff, it doesn't have an api that I can see to change the "LogicalHeight", so this would either have to be done via nms or datapacks

#

I can't tell tho, I'll keep searching

eternal night
#

you cannot do that from bukkit

#

bukkit does its shit way too late to modify the dimension types

floral drum
#

yea

sterile flicker
#

why does entityenderdragon have the isbaby method, is it possible to reduce the size of the dragon?

quiet ice
#

Probably another instance of unfortunate naming

#

If I had to guess, the isBaby method denotates whether the enderdragon is not the original dragon

alpine urchin
#

mojunk

humble lynx
#

or probably just extending from entity

#

to answer your question, you can't resize the dragon

#

although you can resize a wither :p

topaz kestrel
#

hi. im working with npc and i noticed that when player dies npc get despawned is there a way to respawn the npc? i tried using the player death event and player resapwn event and none of them worked

drowsy helm
#

its not that they die, its that they get out of render distance

topaz kestrel
drowsy helm
#

where are you sending it

#

you only have on chunk load

#

and im assuming NPCManager is your own class

#

not a lib

topaz kestrel
#

there is addViewer method which sends the packet to the player.

topaz kestrel
drowsy helm
#

just check when a player is in range, then send the packet again

topaz kestrel
#

i think ive already done that here

drowsy helm
#

which line

#

that code is only on world load and chunk load

topaz kestrel
#

onWorldLoad() and onChunkLoad()

#

both calls respawnNPCFromChunkCoordinate()

drowsy helm
#

yeah when a player dies it won't reload the chunk

#

and at the same time if a player moves away from a chunk, it won't necessarily unload

#

you have to have another listener, like on move to check if they are in distance

topaz kestrel
#

wouldn't that reduce server performance? if I remember correctly, PlayerMoveEvent uses a lot of performance

worthy yarrow
#

Depends what you're doing

topaz kestrel
#

right now, I want to check if the player is in range, then respawn the NPCs. so basically sending packets

drowsy helm
#

it's either that or blindly sending the player data packet every so often

worthy yarrow
#

I mean you could also define an event to trigger this couldn't you?

topaz kestrel
#

what do you mean?

worthy yarrow
#

A custom event

topaz kestrel
#

to do what?

drowsy helm
#

that custom event has to be invoked by some process still

#

it won't just start working

chrome beacon
drowsy helm
#

Citizens does the same checks

topaz kestrel
#

how to check if the player is in the range though

drowsy helm
#

can get the squared dist

topaz kestrel
#

distance() ?

chrome beacon
drowsy helm
#

if you want an efficient check

drowsy helm
#

I used to use citizens way back and couldn't achieve what i wanted to with it

#

idk maybe it's changed since then, but i doubt it

chrome beacon
#

Wdym? Their API is good

topaz kestrel
drowsy helm
#

its just pythag but doesn't sqrt the final value

#

so you don't have to calculate sqrt each distance check

#

so you can just do

distanceSquare(loc) <= threshold^2
#

then you're only ever calculating multiplication instead of sqrt

topaz kestrel
torn shuttle
#

the distance you're trying to check

topaz kestrel
#

the render distance?

drowsy helm
#

anything between 1 and the render distance, its up to you

topaz kestrel
#

so if the render distance is 8, what the number will be?

drowsy helm
#

just square 8

#

so if distanceSquared(loc) <= 64 then render

torn shuttle
#

he's not for math, he's more of a meth kind of guy

#

math's older, cooler cousin

worthy yarrow
#

The kind of cousin that always asks you for money

topaz kestrel
#

so will this work then?

    @EventHandler
    private void onPlayerMove(@NotNull PlayerMoveEvent event) {
        val from = event.getFrom();
        val to = event.getTo();
        val player = event.getPlayer();

        if (isSameBlock(to, from)) return;
        this.npcManager.getActiveNPCs().stream()
                .filter(skyWarsNPC -> skyWarsNPC.getLocation().getWorld().equals(player.getWorld()))
                .filter(skyWarsNPC -> skyWarsNPC.getLocation().distanceSquared(to) <= 64)
                .forEach(skyWarsNPC -> skyWarsNPC.addViewer(player));
    }```
drowsy helm
#

yeah that should work, i wouldn't use a stream though

#

you can probably get away with using some map to keep track of players in render distasnce and have a timeout before checking again

#

O(1) check vs distance checkl

#

if you want to optimise more

topaz kestrel
#

thats a good idea

torn shuttle
#

if he knows what O(1) is I will eat my shorts

topaz kestrel
#

no i don't lol

torn shuttle
#

dodged eating shorts once again

drowsy helm
#

bort

worthy yarrow
#

Should I give a hint?

humble lynx
#

What version are you using? Could also extend server player and override
@Override
public void startSeenByPlayer(@NotNull ServerPlayer serverPlayer) { }

torn shuttle
#

I'm not sure he's 100% on the whole square root vs power of 2 thing so I wouldn't get my hopes up on having O(1) be lesson 2 of java 101

humble lynx
#

It's far simpler imo

torn shuttle
humble lynx
#

You'll still have to send the packet

drowsy helm
humble lynx
#

wait nvm

drowsy helm
#

but yeah removes the need for the distance check

torn shuttle
#

it says start so I assume...

#

wait that's entity-sided? huh

humble lynx
#

^it's just when the player ever needs to load the entity within range

torn shuttle
#

that's kinda cool

topaz kestrel
#

it works lol

humble lynx
#

all entities have it

torn shuttle
#

eh don't think I've ever really needed it

#

but nice to know

topaz kestrel
#

im really glad. cause ive been working on this for like 2 hours to figure out why this wasn't working

torn shuttle
#

this sucks, I woke up at 2 pm and ended up going to the gym just earlier, from 9:30 am to 11:30 am

#

I'm so tired

drowsy helm
#

2pm? what time did you sleep

topaz kestrel
#

but one thing, and that is i sometimes see foot particles

torn shuttle
#

bud

#

I haven't slept

#

it's getting close to 24h

#

that's what sucks

#

it was the only way to keep to my gym schedule

drowsy helm
#

big crash ig

#

reset ur body

torn shuttle
#

hell I have to have two gym memberships just to be able to do this because my main gym isn't even open today

drowsy helm
#

I'm currently smoking a brisket and I am so excited

torn shuttle
#

I would pay a ridiculous amount of money to go to a 24/7

#

there are none in my region

drowsy helm
#

ah dang that sucks

dawn flower
torn shuttle
#

only if it's some kind of loser programmer

#

I go every two days

dawn flower
#

thats still not 24/7

torn shuttle
#

I think you're confused about what a 24/7 gym is

dawn flower
#

theres barely any gyms in my country

#

there are still alot

#

but like

#

most likely there isnt gonna be one near u

torn shuttle
#

that is true of 99% of locations of any given country

#

unsurprisingly gyms tend to always be in cities

dawn flower
#

back to topic

drowsy helm
#

i code between each rep

#

wdym

dawn flower
#

how do i make infinite fireworks

torn shuttle
#

I'm coding right now, just hard on the hands

#

oh heck yeah my timer works

#

I wonder how much data retention I want to do

#

1 hour is probably fine

dawn flower
#

can u listen for firework boost event

gilded granite
#

how can I use my own function in message.setClickEvent() ?

dawn flower
#

u need paper iirc

torn shuttle
#

I run commands from it

#

which run functions

dawn flower
#

players can run that command

#

without the message

torn shuttle
#

sure

#

I tie it with dynamic uuids so they can have a fun time trying to guess what the command is

gilded granite
#

I want to make a button that accept or refuse somthing

torn shuttle
#

but you do whatever you want to do

blazing ocean
#

?components

undone axleBOT
dawn flower
gilded granite
torn shuttle
#

then they get the privilege of using a function they could've just clicked to use

dawn flower
#

do as /^.^ said

eternal night
#

KEKW magmas new name \^.^

dawn flower
#

hi \^.^

torn shuttle
#

this username is older than this discord server

dawn flower
#

magma or \^.^

torn shuttle
#

both

dawn flower
#

ill just call u \^.^

torn shuttle
#

this username is 20 years old, the alt is what i used to use when spigot used IRC

#

so maybe 5 or something

dawn flower
#

wait so it 20 years or 5 years

#

u cant convince me its 20 years old

torn shuttle
#

that's fine I think I can live with that

sleek estuary
#

how i make this on 1.8

pseudo hazel
#

1.8 is ancient if its not in the docs idk

rose frigate
#

guys is there any simple example to show if the person is in combat

drowsy helm
eternal oxide
#

like you want to add an indicator for when a player is in combat? How long? when does it end?

rose frigate
# drowsy helm just listen to EntityDamageBYEntityEvent, check if both are players, and set a t...
public class CombatLog extends JavaPlugin implements Listener {

    private final HashMap<UUID, Long> combatLog = new HashMap<>();
    private static final long COMBAT_COOLDOWN = 10 * 1000; // 10 seconds

    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
        if (event.getEntity() instanceof Player) {
            Player player = (Player) event.getEntity();
            combatLog.put(player.getUniqueId(), System.currentTimeMillis());

            player.sendMessage("You are now in combat!");

            new BukkitRunnable() {
                @Override
                public void run() {
                    combatLog.remove(player.getUniqueId());
                    player.sendMessage("You are no longer in combat!");
                }
            }.runTaskLater(this, COMBAT_COOLDOWN / 50); // 20 ticks per second
        }
    }
}```
drowsy helm
#

that runnable won't work exactly as how you intend it to

rose frigate
eternal oxide
#

you will also start a new runnable every time someone is hit

eternal oxide
#

players will end up with multiple runnables active

rose frigate
floral drum
eternal oxide
#

its not running again, its running another

drowsy helm
#

orelse it will prematurely put them out of combat

eternal oxide
#

if you have 3 players hit one, twice each, the target now has 6 runnables active

rose frigate
eternal oxide
#

those 6 runnables all end but only the first one actually removes them from teh log

#

you still get 6 messages though

rose frigate
obtuse hedge
#

also if a player leaves

#

during combat

rose frigate
obtuse hedge
#

you ok yes will

drowsy helm
#

where are you registering the listener

#

i see JavaPlugin class but no other logic

eternal oxide
#

its likely not his main class and he added JavaPlugin to access Plugin for the runnable. Not knowing you can't do that

humble lynx
#

The logic should be playerHit -> checkIfPlayerInHashmap (if false, set the timer, if true, update the hashmap with new current time) -> check timer every second, compare the time since last, then cancel the timer if true

drowsy helm
humble lynx
#

I'm really procrastinating ;-;

drowsy helm
#

and your plugin should only ever have one class which extends JavaPlugin, which is the core

rose frigate
#

maybe i am too stupid for java

drowsy helm
#

send us through your code and we can help

eternal oxide
undone axleBOT
rose frigate
drowsy helm
#

send your code

#

?paste

undone axleBOT
drowsy helm
#

so you're using the same code

drowsy helm
#

read what i said

sterile flicker
#

why when I set this (this.bukkitEntity as EnderDragon).phase = EnderDragon.Phase.FLY_TO_PORTALthe dragon will not spawn

drowsy helm
sterile flicker
drowsy helm
#

show your code

#

where are you trying to spawn it

sterile flicker
# drowsy helm show your code
class Dragon(location: Location, eggLocation: Location, portalLocation: Location, world: WorldServer) : EntityEnderDragon(EntityTypes.ENDER_DRAGON, world) {
    init {
        this.setPosition(location.x, location.y, location.z)
        goalSelector.a(0, PathfinderGoalFloat(this))
        goalSelector.a(
            8, PathfinderGoalLookAtPlayer(
                this,
                EntityHuman::class.java, 8.0f
            )
        )

        val craftDragon: EntityEnderDragon = this

        craftDragon.setPositionRotation(location.x, location.y, location.z, location.yaw, location.pitch)
        world.world.getBlockAt(eggLocation).type = Material.DRAGON_EGG
        world.world.spawnEntity(
            eggLocation.add(0.0, 0.0, 3.0),
            EntityType.ENDER_CRYSTAL
        )
        world.world.spawnEntity(
            eggLocation.add(0.0, 0.0, -3.0),
            EntityType.ENDER_CRYSTAL
        )
        world.world.spawnEntity(
            eggLocation.add(3.0, 0.0, 0.0),
            EntityType.ENDER_CRYSTAL
        )
        world.world.spawnEntity(
            eggLocation.add(-3.0, 0.0, 0.0),
            EntityType.ENDER_CRYSTAL
        )
        val battleNMS = EnderDragonBattle(
            world,
            world.worldDataServer.generatorSettings.seed,
            world.worldDataServer.C()
        )
        battleNMS.exitPortalLocation = BlockPosition(portalLocation.blockX, portalLocation.blockY, portalLocation.blockZ)
        battleNMS.generateExitPortal(false)
        battleNMS.dragonUUID = this.uniqueID
        val battle: DragonBattle = CraftDragonBattle(battleNMS)
        battle.initiateRespawn()
    }

    fun spawn(red: Boolean): Entity {
        val entity: Entity = this.bukkitEntity
        getWorld().addEntity(this, CreatureSpawnEvent.SpawnReason.CUSTOM)

        (this.bukkitEntity as EnderDragon).phase = EnderDragon.Phase.FLY_TO_PORTAL
    }
}```
blazing ocean
#

why are you extending nms classes

sterile flicker
#

what about my question above?

rose frigate
eternal oxide
#

?di

undone axleBOT
eternal oxide
#

You can NOT have two classes extend JavaPlugin

earnest girder
#

if I know there is an armor stand on a specific block, how can I use world#getNearbyEntities() to get it?
I just want a reliable way to get all entities within a single block

ivory sleet
peak depot
sleek estuary
#

what makes player#sendMap

worthy yarrow
#
public void displayStructureOverlay(Player player, Location targetLocation, int width, int height, int depth) {
        Location[] corners = new Location[]{
                targetLocation.clone().add(0, 0, 0),
                targetLocation.clone().add(width, 0, 0),
                targetLocation.clone().add(0, height, 0),
                targetLocation.clone().add(0, 0, depth),
                targetLocation.clone().add(width, height, 0),
                targetLocation.clone().add(width, 0, depth),
                targetLocation.clone().add(0, height, depth),
                targetLocation.clone().add(width, height, depth)
        };

        drawLine(player, corners[0], corners[1]);
        drawLine(player, corners[0], corners[2]);
        drawLine(player, corners[0], corners[3]);
        drawLine(player, corners[1], corners[4]);
        drawLine(player, corners[1], corners[5]);
        drawLine(player, corners[2], corners[4]);
        drawLine(player, corners[2], corners[6]);
        drawLine(player, corners[3], corners[5]);
        drawLine(player, corners[3], corners[6]);
        drawLine(player, corners[4], corners[7]);
        drawLine(player, corners[5], corners[7]);
        drawLine(player, corners[6], corners[7]);
    }

    private void drawLine(Player player, Location start, Location end) {
        double distance = start.distance(end);
        Vector vector = end.toVector().subtract(start.toVector()).normalize().multiply(0.1);
        Location current = start.clone();

        for (double i = 0; i < distance; i += 0.1) {
            player.spawnParticle(Particle.HAPPY_VILLAGER, current, 1);
            current.add(vector);
        }
    }```

Location is determined based on the players current view, that being said I'm not sure how to figure when I need to add/subtract x/z based on the current facing direction of the player
sterile flicker
#

is there a pathfindergoal that allows the mob to avoid colliding with objects?

#

that is, to shift your position as if bypassing the block which prevents you from moving

worthy yarrow
jovial gazelle
#
[*] Required JVM Arguments not found! Some features may not work as expected.
[*] Please add the following JVM args BEFORE -jar in your startup command:
[*]   --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
[*]   --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED
[*]   --add-opens=java.base/java.lang=ALL-UNNAMED
[*]   -noverify

------------------------------------------------------------
  _____           _                  _____       _             _
 / ____|         | |                / ____|     (_)           | |
| |     __ _ _ __| |__   ___  _ __ | (___  _ __  _  __ _  ___ | |_
| |    / _` | '__| '_ \ / _ \| '_ \ \___ \| '_ \| |/ _` |/ _ \| __|
| |___| (_| | |  | |_) | (_) | | | |____) | |_) | | (_| | (_) | |_
 \_____\__,_|_|  |_.__/ \___/|_| |_|_____/| .__/|_|\__, |\___/ \__|
      Version 4.2.6                       | |       __/ |
                                          |_|      |___/
------------------------------------------------------------

WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.bukkit.craftbukkit.Main.main(Carbon:65)
        at tf.leaks.carbon.Loader.main(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: No class provided, and an appropriate one cannot be found.
        at org.apache.logging.log4j.LogManager.callerClass(LogManager.java:573)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:598)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:585)
        at net.minecraft.server.v1_8_R3.SystemUtils.<clinit>(Carbon:31)
        ... 2 more
#

can someone please help ?

#

i keep getting this error

#

whenever i start lunching the serber

#
@echo off
java -Xms4G -Xmx4G -XX:+UseG1GC -noverify -jar carbonspigot.jar nogui
pause

my startup command

worthy yarrow
#

carbon spigot huh

jovial gazelle
#

a paid fork

shadow night
#

A paid fork? Aren't paid forks illegal if we believe the mc eula

quaint mantle
jovial gazelle
#

i got it from a friend

blazing ocean
#

even more illegal then

worthy yarrow
#

pirated spigot fork

shadow night
#

even worse

#

piracy of illegal software

hazy parrot
#

they list Log4J RCE exploit patched as one of the features ☠️

shadow night
#

also, my internet is slow af

jovial gazelle
#

report me

shadow night
#

why would I

quiet ice
worthy yarrow
#

pirated even

sleek estuary
worthy yarrow
quiet ice
#

What exactly is the issue here?

worthy yarrow
#

Let me get a clip

sleek estuary
#

deleta a msg e vai pa outro canal

balmy sonnet
#

qual

quiet ice
balmy sonnet
sleek estuary
#

tas desculpado

quiet ice
#

you're more likely to get an answer in the plugin's discord either way

sleek estuary
quiet ice
#

here we can only realistically give an answer using common sense

sleek estuary
#

which

worthy yarrow
#

And I'm just unsure of how to put this into code

quiet ice
#

Do you already have quadrant snapping logic?

worthy yarrow
#

No I do not, just align with proper block spacing currently

#
private void startOverlayTask(Player player, Location targetLocation, int width, int height, int depth, String schematicFileName) {
        targetLocation.setX(Math.floor(targetLocation.getX()));
        targetLocation.setY(Math.floor(targetLocation.getY()));
        targetLocation.setZ(Math.floor(targetLocation.getZ()));

        Location oppositeCorner = targetLocation.clone().add(width, height, depth);

        int taskId = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () ->
                visualOverlay.displayStructureOverlay(player, targetLocation, width, height, depth), 0L, 10L);
        overlayTasks.put(player, new OverlayTask(taskId, schematicFileName, targetLocation, oppositeCorner));

        player.sendMessage("Use /confirm to place the structure or /cancel to cancel.");
    }```
quiet ice
#

Then what is the difference between east and south there?

#

Also, FYI you posted the same link twice, so I might be missing some crucial info here

worthy yarrow
#

It seems to rotate the placement 90 degrees

#

Oh

#

^west/north

quiet ice
#

that's the same link a third time now

worthy yarrow
#

dear god

quiet ice
#

And could you show the code that depends on the player's rotation?

worthy yarrow
#
BlockVector3 dimensions = worldEditHandler.getSchematicDimensions(schematicFileName);
        if (dimensions == null) {
            player.sendMessage("Failed to get dimensions of schematic file: " + schematicFileName);
            return;
        }

        int width = dimensions.x();
        int height = dimensions.y();
        int depth = dimensions.z();

        Location eyeLocation = player.getEyeLocation();
        Vector direction = eyeLocation.getDirection().normalize();
        Location targetLocation = eyeLocation.add(direction.multiply(5));

        startOverlayTask(player, targetLocation, width, height, depth, schematicFileName);
    }
quiet ice
#

?jd-s hm, yeah

undone axleBOT
worthy yarrow
#

I'm looking for?

#

Or are you looking

quiet ice
#

But shouldn't width/height and depth be adjusted with the player's rotation, too?

worthy yarrow
#

The issue lies in the visual overlay class, being I'm always adding to the target location, north/west or x/z (wtv the correlation is) would need to be subtracted right?

quiet ice
#

I'd use a negative width/height depending on the quadrant the player is looking in

#

This probably can just be achieved by ensuring that the direction vector has the same signs as the width/height/depth vector

worthy yarrow
#

Ok let me try that

hushed spindle
#

does anyone know if the wood variants of logs are added to the LOGS tag?

#

like OAK_WOOD instead of OAK_LOG

quiet ice
#

Doesn't F3 show that?

hushed spindle
#

oh does it? time to boot up my game ig

worthy yarrow
#

Ok so

#

This was not what I meant to do

#

But it's actually really cool

quiet ice
#

I meant more something like

width = Math.copySign(width, eyeLocation.getX());
height = Math.copySign(height, eyeLocation.getY());
depth = Math.copySign(depth, eyeLocation.getZ());
startOverlayTask(player, targetLocation, width, height, depth, schematicFileName);

@worthy yarrow

worthy yarrow
#

I'm gonna have to save this code cuz I mean

#

that's quite cool imo

sleek estuary
#

What can I do to improve the map design?

tribal cove
#

is there any simple solution for mixins in spigot?

shadow night
#

pretty sure spigot does not do mixins at all

tribal cove
#

spigot itself probably doesn't, yeah

sand spire
sleek estuary
sand spire
river oracle
#

Mixins and spigot could not be more opposite of eachothers ideas

sleek estuary
#

I don't know why the map doesn't fill in

shadow night
tribal cove
#

then is there any other way for me to modify/replace MC classes?

river oracle
#

that is in the realm of modding

sand spire
sleek estuary
#

What can I do to improve the filling of the map above? It doesn't have the colors of the world blocks for some reason.

sleek estuary
river oracle
# shadow night I wish we could get mixins tho

I'm glad we don't have them. Its a compatibility nightmare, very few devs actually know how to intelligently write mixins and it'd invalidate the entire existance of the API in the first place

#

why have an API if you can just mixin everywhere

tribal cove
shadow night
#

Mixins should be for the advanced people and plugins

tribal cove
#

obviously mixins aren't supposed to be used for literally every single thing

river oracle
#

much like spigot, but rather than leveraging spigot API you can leverage mixin and the fapi

shadow night
#

I think the concept of bukkit/spigot is a bit outdated tho

#

What does spigot do better than fabric

river oracle
#

I really don't see the issue here

#

if every developer is affraid to switch because of market share no change is ever made

shadow night
river oracle
shadow night
river oracle
tribal cove
quiet ice
#

yes

#

They run on different classloaders

#

I haven't looked at my plugins for a few years now - knowing that they probably still work on the newest version is such a godsend

shadow night
#

Lol

tribal cove
#

so no way of communicating between an ignite mod and a plugin?

quiet ice
#

There is, but it is non-trivial

#

You'd want to avoid such communication at the very least - for several reasons even beyond the practical ones

sleek estuary
#

What can I do to improve the filling of the map above? It doesn't have the colors of the world blocks for some reason.

obtuse hedge
#

spam alert!

river oracle
shadow night
#

if you look at the current code of it you'll notice that it does not look healthy lol

tribal cove
worthy yarrow
#

@river oracle you should join general 1 and see this cool thing I did

eternal night
#

@river oracle you should join general 1 and see this cool thing nuclear did

worthy yarrow
#

how

#

rude.

river oracle
worthy yarrow
#

He never got to see it

eternal night
#

join now

#

tricked you, it's ass

worthy yarrow
#

bruh

eternal night
river oracle
#

ahahhaa

worthy yarrow
#

Neither of you even saw it

eternal night
#

(I have 0 idea what it is, I am just memeing)

worthy yarrow
#

Come take a look its actually really cool

river oracle
shadow night
river oracle
#

nah you're using tiny kekw

shadow night
river oracle
#

I'm confused how its taking so long to make a simple remapping gradle plugin? Its not done yet right?

shadow night
#

And most of the time spent was writing the mapping merger

quiet ice
shadow night
#

To merge intermediary and spigot mappings because of some stupid classpath shit

river oracle
#

why even bother with spigot mappings

shadow night
#

because that's what the spigot server jar is in?

river oracle
#

confused how merging that and intermediate has any benefit though

shadow night
tribal cove
worthy yarrow
#

@blazing ocean convince y2k to look at my cool thing, tell him it's really cool

shadow night
#

Not just classes like modern versions, but also members

chrome beacon
worthy yarrow
#

What do you think y2k?

chrome beacon
#

But no support for piracy here

tribal cove
quiet ice
#

Then use a callback system, as iirc the bukkit plugin classloader is still able to access teh classloader to the ignite mod (but not vice-versa)

#

You could even use bukkit's event handler system if it really needs be

olive lance
#

Previusly i was comparing ItemStack#getType with Material what is the way now?

eternal night
#

the same way

#

do not use spigot's experimental API dependency

olive lance
#

I get cannot resolve symbol Material

worthy yarrow
#

update intelliJ

olive lance
#

Oh my bad, someone else said that and I thought they were speaking to someone else

#

Why would I need to update intellij for that out of curiosity

#

Yeah well I did the same way I had previously, I had just updated the spigot version. Intellij is updating now

worthy yarrow
eternal night
#

they need to update intellij because the API compiles with java 21

#

and older intellij versions cannot parse that bytecode

worthy yarrow
#

So I'm correct in a way less descriptive way

olive lance
#

Still getting this idk if this is right?

#

its 1.20.6 also

#

I just ran latest buildtools prior to this

brittle gate
#
import org.spigotmc.event.player.PlayerQuitEvent;
import org.spigotmc.command.Command;
import org.spigotmc.command.CommandExecutor;
import org.spigotmc.command.CommandSender;
import org.spigotmc.configuration.file.FileConfiguration;
import org.spigotmc.plugin.java.JavaPlugin;
```Friends, can you tell me the correct import codes?
shadow night
#

Use your IDE?...

undone axleBOT
keen pendant
#

Hello! How do I make my resources premium, to be bought with money?

kind hatch
#

?premium

keen pendant
#

thanks

pseudo hazel
#

question, I wanna add negative spacing to my resource pack for texture reasons, I found a pack online that contains the spacing characters, do people usually just send the space resourcepack alongside their actual resource pack or is it better to just merge the resource packs together?

young knoll
#

Just merge them

#

It's like 3 files

restive mango
#

Hello.

slender elbow
#

good morning

restive mango
#

Say I had one class (item), which contains some variables including a uuid, and a class that extends from it (plant) which includes all the variables from item but also has a few others like seedmaterial, growthspeed, etc

#

How can I store both of these in one hashmap? Should I?

#

Like I want to be able to do things like get the class by it’s uuid, and then check if it’s an instanceof plant

#

Things like that

#

Idk I’m not great at this Java stuff

#

But if anyone had tips about these data structure things I would really appreciate it

orchid rapids
#

Looking for feedback on SPIGOT-7829

sleek estuary
#

i get worldmap by worldname?

silent cove
#

I have an event listener for block break event that is annotated with ignoreCancelled = true, however someone with some custom plugin preventing the block from being broken, but my listener is still acting upon the block break event. Is there another way I should be checking for the event being canceled?

orchid rapids
#

This is probably the oposite of what you want

silent cove
#

oh really?

sleek estuary
#

how i get worldmap by worldname?

sterile leaf
silent cove
sterile leaf
#

did you asked for dir or World object

orchid rapids
#

Hm, maybe I am misremembering

sleek estuary
orchid rapids
#

But you can also do event.isCancelled()

silent cove
#

im aware. that effectively does the same thing, except the annotation is suppoed to ignore the entire execution

sterile leaf
orchid rapids
#

Or is it higher? I only remember that Bukkit's ordering is backwards, and then I trick myself into thinking it's the other way around from what I remember when I already remember the correct one

#

I think high prio is last, and low prio is first

#

Apologies for the mixups. It's been 10 years since I was an active plugin developer

remote swallow
#

oh fuck kangarko is here

remote swallow
orchid rapids
#

But it is probably unexpected for a lot of people

remote swallow
#

yeah

quaint mantle
#

How can I disable or replace the default spectator mode inventory?

tardy delta
#

ik theres BossBar::setColor or smth but not sure if "vanilla" bossbars can be customized with the api

celest lichen
spiral lava
#

Hello, I want the npc to make me tp a few coordinates from my world and I don't know how to do it, can you give me a solution?

zinc yacht
#

help plz

#

its says thats its abstract and thats have a constructor at the same time

#

how can i fix it?

echo basalt
#

Abstract classes can have constructors

#

It just means that the subclasses are the ones calling them

zinc yacht
#

so what do i do

echo basalt
#

Looks a bit like this

public abstract class MyAbstractClass {

  private final int value;

  public MyAbstractClass(int value) {
    this.value = value;
  }

  ...
}
public class MySubClass extends MyAbstractClass {

  public MySubClass() {
    super(1);
  }
}
zinc yacht
#

im stupid a bit

echo basalt
zinc yacht
#

ok thanks\

echo basalt
tardy delta
#

imillusion the rizzler

autumn ingot
#

is there just a generic block change event that tracks whenever a block changes state? (e.g. a leaf decaying, water breaking crops, creeper exploding, player placing a block, etc.)

#

im trying to listen for all block changes but i have no idea how to do it

#

to avoid the xy problem, basically i want to create a "snapshot" of the server that i can rollback to at any time, my idea was to store all entity locations, player health/data, etc. in maps (this has already been done successfully) and use FAWE to copy the world (obviously not the entire thing but all blocks in a 200 block radius at the time of the snapshot) to a clipboard and paste it when rolling back

the issue with using FAWE is that its copying tens of millions of blocks when in reality, maybe only a few hundred blocks would've been changed since the snapshot. hence why im looking for a way to log what blocks have been changed (e.g. a block change event)

smoky thunder
#

Does anyone know a good developer to finish configuring my spigot server?

pseudo hazel
#

I only know bad developers sorry

#

?services

undone axleBOT
smoky thunder
#

diference hiring developers, vs offering developers?

pseudo hazel
#

if you are a developer, you are offering your developer skills

smoky thunder
pseudo hazel
#

yes

#

and if you wanna make a post you go to hiring

kind hatch
#

If you want to hire a developer, you go post in hiring.
If you want to offer your services as a developer, then you post in offering.

smoky thunder
#

thats only to finish the server are at 90-95%

torn shuttle
#

I'm going to take a wild guess and say the easiest way to do post requests is not with httpurlconnection

slender elbow
#

thankfully, the jdk has an http client