#help-development

1 messages · Page 941 of 1

sterile flicker
#

????

alpine urchin
#

i'd feel bad even asking that much from you.

#

you know

#

what

#

after reconsideration, maybe i'm missing out. i'd happily join your medieval minecraft server.

#

i'd happily be your developer for free.

restive mango
#

You can do as much or as little as you want

#

@alpine urchin

#

Mostly we just code stuff for like kids to play with

sterile flicker
restive mango
#

If ur interested u can dm me

alpine urchin
#

So how much do I have to pay you to be a part of your server @restive mango ?

restive mango
#

Well it’s not even my server

#

I also don’t get any of the donation money

hollow reef
#

is it possible to get the contents of a generated (loot) chest before a player opened it?

restive mango
#

It doesn’t cost to join tho

alpine urchin
restive mango
#

Rough

#

I just code for it

alpine urchin
#

Do you know how to code?

restive mango
#

Yup

alpine urchin
#

How many bits are in a bit?

restive mango
#

Do you mean byte

alpine urchin
#

Stop trying to avoid the question.

#

I know what you are doing here.

twin venture
#

Hello there , it tells me that the byte is wrong and give me an error :
its for 1.20.4

#

the 5 should be head slot

alpine urchin
#

Now tell me, how many bits are in a bit?

twin venture
alpine urchin
#

Give us more context

#

of your code

#

Okay

twin venture
#

equip packet using protocollib

alpine urchin
#

Where did you get the information

#

that it is a byte

twin venture
#

for 1.20.4

alpine urchin
#

didn't you

twin venture
#

yes

#

it say Byte

alpine urchin
twin venture
#

if iam not mistaken

alpine urchin
#

the lowest level

#

ProtocolLib reads NMS packet classes

#

using reflection

#

so just because in the network buffer it is written as a byte, doesn't mean NMS stores it as a byte.

#

NMS could store it as an int

twin venture
#

your packet api you made is amazing but it does have allot of stuff i don't need so iam creating my own .. 🙂

alpine urchin
#

So to be safest, decompile NMS minecraft, and see what data type represents what you are looking for

#

and see that in this case it isn't a byte

#

👍

twin venture
#

alright thanks

alpine urchin
twin venture
#

really huge ..

alpine urchin
#

protocollib is way larger

#

but fair enough

fallen lily
#

Ofc reading it from the network is different

alpine urchin
#

what's your point

fallen lily
#

Point being it doesnt matter what nms stores it as

alpine urchin
#

He's using reflection

#

so it does matter what NMS stores it as

fallen lily
#

Ah

alpine urchin
#

which may not always corrospond to the data type stored in NMS' wrapper

slender elbow
#

I haven't

alpine urchin
#

But it's a common mistake people make when dealing with ProtocolLib or their own packet libraries.

fallen lily
#

Lol

#

How silly must you be

alpine urchin
#

No, it's not silly.

fallen lily
#

Register a handler in netty after decode & decrypt

#

Process

#

Reset position

#

Done

#

no funny business

#

Ofc you & nms are now deserialising twice

#

But please dont act like reflection is better

#

😭

twin venture
#

only this major versions

#

ik it change how it read the data bettwen old ver , and new

alpine urchin
#

I don't think you fully got my point.

#

Are you using ProtocolLib or your own little utility or whatever.

alpine urchin
#

I would redirect you to their github issues

twin venture
#

but i will make a moudle system so i can make diffrent code for spwan , despwan, editMeta for entity for diffrent versions

alpine urchin
#

but they're too many

#

you won't get a response

twin venture
#

ik

#

tried that before

#

i will go out to work anyway .

#

thanks for help 🙂

alpine urchin
#

try

#

instead of

#

getBytes()

#

try something along the lines of getItemSlots()

#

or so

#

something with itemslots

#

enumitemslots

#

I didn't design ProtocolLib so I don't know.

hollow reef
#

is it possible to get the contents of a generated (loot) chest before a player opened it?

alpine urchin
#

That's a really good question

valid burrow
#

if the loot is 100% the same every time cause of the seed

#

then yes

alpine urchin
#

idk how helpful that answer is

twin venture
#

i did this ,

fallen lily
twin venture
#

and i still get the same error 🙂

hollow reef
fallen lily
#

Afaik it generates during chunk gen

alpine urchin
#

show the error

#

i dont think you did it completely right

hollow reef
twin venture
alpine urchin
#

Yeah you need

#

a list

#

you were a google search

#

away from the answer

hollow reef
alpine urchin
#

Do what he does for the most part

sterile flicker
#

please help)

fallen lily
hollow reef
#

what is a "NMS player"?

valid burrow
#

low level

fallen lily
#

An instance of an implementation of the “Player” interface

valid burrow
#

watch a tutorial on it

#

NMS

hollow reef
fallen lily
#

If you’re gonna be fucking with nms you may as well call the generation method directly though

#

Hence why I put the troll because its a suboptimal solution

hollow reef
#

are there some api stubs for the net.minecraft source? Im pretty new to spigot api tbh

remote swallow
#

its net.minecraft.server

valid burrow
timid hedge
#

If i have 3 config files how do i get a string from one of them? do i just use getString("patj") or is there a other way that i need to use?

remote swallow
#

yes

#

huge difference

valid burrow
#

im tired

remote swallow
#

hi tired im epic

valid burrow
#

the difference being?

remote swallow
#

net minecraft server used to be the package all code was in but they removed that

alpine urchin
#

you guys mislead the poor soul

buoyant viper
#

fun fact

net.minecraft.source (or maybe net.minecraft.src) was used, but by OptiFine

remote swallow
#

who cares about optifine anymore

buoyant viper
#

idk i use sodium

shadow night
#

optifine is the most intrusive mod ever

remote swallow
#

i havent installed optifine since like 2021

shadow night
#

I use it on my phone

remote swallow
#

?configs

undone axleBOT
valid burrow
#

getString("path")???

#

what

timid hedge
#

the path

valid burrow
#

getString will get a string isnside the config

#

not a file

timid hedge
#

yeah no shit, "path" is the path inside the config file

alpine urchin
#

who wants a tutor

#

in everything

#

please

#

im desperate

#

anything

#

Please

fallen lily
alpine urchin
#

🧎

fallen lily
#

Forge 🔥

valid burrow
#

just a bit very old

vivid skiff
#

How can i use Mojang Mappings in gradle?

valid burrow
vivid skiff
buoyant viper
#

paper has tooling for gradle iirc

#

just gotta watch if u only want to use spigot api stuff

remote swallow
#

i use patrick choes remapper

umbral ridge
#

I use myCoffee remapper

vivid skiff
#

Links to the sources?

valid burrow
fallen lily
vivid skiff
#

I just prefer gradle over maven

fallen lily
#

Dont we all

remote swallow
#

use patrick choes remapper

umbral ridge
#

i love maven

remote swallow
#

bc paper is gonna be breaking stuff soon

valid burrow
fallen lily
#

🥸

valid burrow
#

the cases where gradle makes more sense are

#

limited

remote swallow
#

nah

#

gradle is always useful

vivid skiff
#

i just hate pom.xml files

rough ibex
#

why

remote swallow
#

they are kinda ugly

vivid skiff
#

Are confusing for me, to long

rough ibex
#

it's just XML

valid burrow
#

yall acting like you have to look at the all day

fallen lily
#

blud is writing eXtensive Markup Language to build a java/kotlin project

valid burrow
#

at this point 99% of what you have to do is

#

open once

valid burrow
#

add the library copy paste

#

and close

#

thats litterally it

rough ibex
#

XML is used in a lot of places

valid burrow
rough ibex
#

you likely just copy-paste the dependency tag

valid burrow
#

exactly

tribal cypress
#

Heyo, how would I get the number of matched results outside of the async task? (Also would appreciate if someone checked if my code is alright, didn't test it yet)

public int addMessage(String message){
        Bukkit.getScheduler().runTaskAsynchronously(Main.getInstance(), new Runnable() {
            @Override
            public void run() {
                try (Connection con = Main.getInstance().getHikari().getConnection();
                        PreparedStatement insert = con.prepareStatement(INSERT);) {
                    insert.setString(1, message);
                    int matched = insert.executeUpdate(); // I want this
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        });

      // To be used here
    }

Any help appreciated

fallen lily
#

You’ll probably want a “callback” to execute when its finished

tribal cypress
#

Yuh, and how do I do that?

remote swallow
#

completeable futures >>>>

fallen lily
#

addMessage(String msg, Consumer<MyResultType> callback)

tribal cypress
tribal cypress
#

Alr, will look into it, thanks

remote swallow
#

read here

scarlet gate
#

What's the best way to get an instance of a vanilla enchantment from it's name?

remote swallow
#

they are badly named

#

iirc it got updated recently and you have to get it from the registry

chrome beacon
valid burrow
#

or just make a big switch

remote swallow
#

nah

#

use the registry

valid burrow
#

in 5 yesrs someone will show a screenshot of thats to my boss and ill loose my job

scarlet gate
#

Yeah I was planning on using the registry

hollow reef
#

are there some api stubs for the net.minecraft.server api I can use in intellij?

scarlet gate
#

Just wasn't sure what the best way to get a suitable NamespacedKey was

hollow reef
chrome beacon
hollow reef
#

hmm, then is there the source code or anything I can import into intellij so I can have autocomplete

chrome beacon
#

What version do you want to work with

scarlet gate
#

Ahh thank you

hollow reef
chrome beacon
#

?nms

timid hedge
#

?paste

undone axleBOT
hollow reef
# chrome beacon ?nms

thank you, do I need to use this jar to launch the server or is it just for the IDE?

timid hedge
echo basalt
#

Is the economy class you're importing yours or is it part of an external library?

chrome beacon
echo basalt
#

Great so that dependency must be on the server, or shaded into your plugin

#

And if it is there make sure to add a depend field on the plugin.yml so your plugin loads after your dependency

timid hedge
#

Ohh yeah, thx. Its the depend part i have forgot

timid hedge
echo basalt
#

o_o are you creating a new instance of your javaplugin class

tribal cypress
# remote swallow read here

I'm sorry if I'm bothering too much, but could you give me an explanation/example based on the problem I sent? I don't really understand how to implement it into the code

Do I have to make my database thingy into an interface or somethin?

eternal oxide
#

or you extended JavaPlugin in more than your main class

remote swallow
# tribal cypress I'm sorry if I'm bothering too much, but could you give me an explanation/exampl...
public CompletableFuture<Integer> addMessage(String message){
        CompletableFuture.supplyAsync(() -> {
                try (Connection con = Main.getInstance().getHikari().getConnection();
                        PreparedStatement insert = con.prepareStatement(INSERT);) {
                    insert.setString(1, message);
                    int matched = insert.executeUpdate(); // I want this
                    return matched;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
        });
    }

// use in another method, formatting will be fucked up for the code above 
echo basalt
echo basalt
#

@tribal cypress

vocal cloud
#

Main.getInstance().getHikari().getConnection()
this makes me sad

glad prawn
#

yes

alpine urchin
hollow reef
chrome beacon
#

Use jdk17

hollow reef
#

okay, just a general question, why is this so strict? Most of the time there aren't even big differences between java versions

chrome beacon
#

For you yes

#

not for the compiler

umbral ridge
#

There were some major differences in 21

rough ibex
#

Everyone knows they just increase the version because they feel like it

tribal cypress
tribal cypress
#

I usually just pass the main class instance through a constructor, but I don't see a problem in doing this

vocal cloud
#

I'm just not a fan of the class.getthing.getthing.getthing lol

tribal cypress
chrome beacon
#

You're probably on an old version

chrome beacon
#

so that would be why

grim hound
#

how do I override the chunk generator of an existing world?

#

do I just bruteforce it with reflection?

chrome beacon
#

What is loading the world

tall dragon
#

hey, apologize for the tag. but where is GsonSerializer from?

lost matrix
tall dragon
#

could i uhh,. see it?

lost matrix
#

Im close

tall dragon
#

haha yea i see

#

only 3 left

lost matrix
tall dragon
lost matrix
#

You can just clear the ctor

#

The idea of this class is that you can dynamically add type adapters whenever you need to.
I was a bit bothered by the fact that you couldnt change the Gson instance after building it.

tall dragon
#

yea i find that very annoying as well

#

that is possible with this?

lost matrix
#

Sure. You can just create an instance of this and then pass it around and let everyone regster their adapters or even
change the builder dynamically.

tall dragon
#

how ru even initializing this

lost matrix
tall dragon
#

oh damn im blind

zinc moat
#

why do some people use nms for there plugins

remote swallow
lost matrix
zinc moat
#

Ahh alrigth

sterile flicker
#

please help)

echo basalt
#

There's a map data packet you still need to send

sterile flicker
sterile flicker
# echo basalt There's a map data packet you still need to send

for example java ((CraftPlayer) player).getHandle().playerConnection.networkManager.sendPacket(new PacketPlayOutMap(yourMapId, 4, false, true, new ArrayList<>(), yourByteArray,0,0,128,128)); I can get the mapid via MapView.getId(), but what is byteArray?

echo basalt
#

it's the colors for that map

sterile flicker
echo basalt
#

You might be able to get them from the craft map view

tidal kettle
#

can someone help me or give me an exmaple of the worldcreator.generatorsettings
i try
worldcreator.generatorSettings("{layers: [{block: stone, height: 1}");

sterile flicker
echo basalt
#

map the colors to a byte array

#

and you can skip the mapview entirely

young knoll
#

I wish we had better map colors

#

Like can we get 15 bit rgb

sterile flicker
rough ibex
#

you are using 1.12.2?

sterile flicker
#

i found MapPalette class

sterile flicker
rough ibex
#

why

sterile flicker
#

because I want to)

rough ibex
#

well we don't want to support old versions

#

try it and see if it works

#

if it doesn't, you might be on your own

torn shuttle
#

I sense a disturbance in the force, as if a developer just nuked a codebase because the code was all garbage and has rewritten it to be marginally less garbage, but it still debugging it

young knoll
#

Is uhh

#

Is he okay

torn shuttle
#

no

young knoll
#

F

tribal cypress
young knoll
#

You don’t need to run an async task inside a completable future

torn shuttle
#

well

tribal cypress
#

Awesome, thanks

torn shuttle
#

I retroactively justified spending little under a week playing with godot by changing these to use transformation matrices which is what I should've done in the first place had I not been so lazy

#

I'm hoping I"m down to the last issue, a mismatch between pivot points and model centers

dawn valley
#

After restart I loose it

young knoll
#

Metadata is not pdc

#

And is not persistent

#

?blockpdc

undone axleBOT
young knoll
#

Oh wait you save it to a file

#

I just didn’t scroll that far down

dawn valley
young knoll
#

Does the file have the correct data

dawn valley
#

Data yml

#

Yes the coordinates are being saved

#

But the block is becoming normal water

#

It’s loosing its ability of fake water

tardy delta
#

anyone knows whether i could delegate to Configuration without that default param constructor thing?

class Config(
        private val plugin: X,
        private val fileName: String,
        // yes this is ugly but who cares, at least we aren't manually delegating anymore
        private var config: FileConfiguration = YamlConfiguration.loadConfiguration(File(plugin.dataFolder, fileName))
) : Reloadable, Configuration by config {```
dry hazel
#

delegating like that needs a primary constructor parameter, it doesn't need to have a default value tho

dawn valley
young knoll
#

Just save and load it directly

tardy delta
young knoll
#

Seems to me like you have two classes extending JavaPlugin

#

Don’t do that

remote swallow
#

so why does it have an onEnable

tall dragon
#

either ur creating antoher instance of ur main class, what coll said. or theres 2 of your plugin in ur plugin directory

young knoll
#

Poor naming choice then

tardy delta
#

:/

young knoll
#

What

dry hazel
tardy delta
#

disturbing

tall dragon
#

but

#

why

young knoll
#

… seems pointless but okay

remote swallow
#

why cant they just be 1 plugin

#

1 plugin without any internal plugin loading

#

that doesnt stop it being 1 plugin

#

everytime i say 1 plugin i mean 1 plugin with no internal loading

#

i dont see a reason for this to have internal loading at all

#

it doesnt make more sense for that

#

it just makes it more confusing

rough ibex
#

I still don't see a legitimate reason for this

#

what you are trying to do is both impractical, and frankly, stupid

#

and ultimately useless

#

Keep your plugins separate.

#

If you have shared functionality, move it into a library

#

and depend on that

#

No, it does not

#

it makes no sense

#

How do I not know?

remote swallow
#

there is no server that would need something like that

rough ibex
#

You haven't given any details about that, and ^

#

Then that server is wrong.

remote swallow
#

X

rough ibex
#

and is doing things the wrong way

young knoll
#

But 5 plugins run 10000% worse than 1 plugin with the same features

#

Source: dude trust me

rough ibex
#

okay, and

remote swallow
#

you also have 1 giant glaring issue, if 1 of your sub plugins error they shut down the entire plugin

rough ibex
#

doesn't mean that the idea is wrong

remote swallow
#

everything shits the bed not just that 1 feature

rough ibex
#

Mans taking 'loose coupling' in the opposite direction and fast

#

Separate your plugins

#

once you have done that, then we can help

young knoll
#

“Somehow”

#

Bruh the code didn’t just magically appear

#

You wrote another onEnable at some point

tardy delta
#

ah yes this is valid syntax

class Config() : Configuration by YamlConfiguration.loadConfiguration(File(plugin.dataFolder, fileName))```
young knoll
#

Okay well, someone did

rough ibex
#

whose code is this then

#

why aren't they the ones asking for help

#

okay, remove the second onEnable

#

again, separate your plugins

remote swallow
#

butter has your profile picture change colour

rough ibex
#

and check how you're initalizing

remote swallow
#

according to you, it has modules/sub plugins

rough ibex
#

citrus

remote swallow
#

each of those become 1 plugin

rough ibex
#

by not implementing 2 plugins in 1?

remote swallow
#

you literally just said you have like 4 different plugins in 1

rough ibex
#

which is it

remote swallow
#

time for you to go and read the asking for help post

#

go read this (look at me go illusion i didnt ping you)

rough ibex
#

okay, so remove the second onEnable

#

then refactor it

#

make it work

#

none of your code should depend on onEnable(), really

#

onEnable should setup things that other parts can use

#

That would be ideal, yes

#

when asking for help with code it is good to show said code

#

I told you

#

refactor out the second onEnable

#

and see what coll said

tardy delta
#

dammit you cant even change a delegation impl at runtime in kotlin

slender elbow
#

🤔

winter cradle
blazing ocean
acoustic pendant
#

would it work if i use Bukkit.getServer().getOnlinePlayers() in the onDisable method?

lilac dagger
#

yes

#

plugins disable happen before all the server related unloads

acoustic pendant
#

ok, thanks

torn shuttle
#

holy shit, I think it's done

#

I might actually be fully done with this

jagged bobcat
#

That looks epic how did you do it

young knoll
#

Display entities are love, display entities are life

torn shuttle
#

it's freeminecraftmodels, well, it's the rewrite from hell that took way longer than it had any reason to because I was lazy at first and ended up working for nothing

torn shuttle
#

and should automatically assign based on server version and client protocol

jagged bobcat
#

Ohh

torn shuttle
#

(via floodgate)

young knoll
#

Ah right bedrock

#

Meh, bedrock smells

torn shuttle
#

well so do you so what does that really amount to at the end of the day

young knoll
#

:(

#

I mean any scale transformations would break on bedrock

torn shuttle
#

well I don't really care because ngl even though I have the code for it I have not implemented scale yet

#

and I don't think I will do it right now

#

hm

young knoll
#

I think mine does scale

torn shuttle
#

yeah no I don't really care right now

young knoll
#

Tbh I never tested it

torn shuttle
#

I just want to put this out

young knoll
#

But it’s part of the matrix so it should work

torn shuttle
#

took me over a month to go back on what I said on day 1 and just implement transformation matrices

#

should've done that on day 1, I would've been done by day 2

#

hell it took me like 3 hours to do and most of it was ripping out the old code

young knoll
#

Yeah it took me like a week of bashing my head against 3 vectors to just switch to matrix4f

torn shuttle
#

yep

#

basically me but at a worse scale

sour brook
#

How to get double chest items with block?

torn shuttle
#

definitely nailed it

sand spire
torn shuttle
young knoll
#

I am a panda and I must A̶̐̚s̶̯̉c̵̅́ë̷́̆ñ̵̊d̸̀̇

torn shuttle
#

Why didn't you donate to the panda drive, Steve? Do you hate pandas, Steve? Do you enjoy watching me suffer, Steve?

trim lake
#

When its EntityDropItemEvent called? I was thinking its called when u kill entinty, but is not

young knoll
#

When the player drops items

#

And when certain entities drop items

trim lake
#

When entity died it drop items, looks like its handled by EntityKillEvent

trim lake
#

its kinda wierd imo, but its mc nothing special lol

#

thanks for explanation

spare hazel
#

is this how super works?:

we have an abstract class with a constructor accepting x,y and setting them

and we have a class extending that abstract class and it calls super(10, 20);
so now if i call getX(); in the extending class will it give me 10?

young knoll
#

Yes

torn shuttle
#

well this is a fun bug

#

my animations are playing 3x too fast

#

and I can't figure out how I did that

spare hazel
#

then just multiply the time for each frame by 3 or divide each movement speed by 3

#
public CustomItem(String id, String name, Rarity rarity, Type type, CustomEnchantment[] enchantments, Material material) {
        this.id = id;
        this.name = name;
        this.rarity = rarity;
        this.type = type;
        this.enchantments = enchantments;
        this.material = material;
    }
    // com.amirparsa.skymine.customitem.store.WoodenPick -> super("WOOD_PICK", "Wooden Pick", Rarity.COMMON, Type.PICKAXE, new CustomEnchantment[]{...}, Material.WOODEN_PICKAXE); | getName(); -> "Wooden Pick"

like this?

glad prawn
#

what?

torn shuttle
sand spire
#

What is a good way of delaying/cancelling all AsyncPlayerPreLoginEvent's if onEnable isn't finished yet? My data is getting corrupted if I start logging in before the server is on 💀 do i like use completable future or something

glad prawn
#

they cannot enter if the server has not finished loading

sand spire
#

and I create a new data profile if the player doesn't have one yet, so it is important the dataprofiles are all loaded

young knoll
#

It should be impossible for that to fire before onEnable has

spare hazel
#

'EnchantmentWrapper#getName()' is deprecated
what should i do then

remote swallow
#

getKey().getKey

spare hazel
#

alr thanks

#

will it return something like DAMAGE_ALL? how can i convert it to normal names like Sharpness

young knoll
#

It will return the internal name

#

So for sharpness

#

That’s sharpness

sand spire
spare hazel
#

wait so it will return just SHARPNESS? i dont have to do any conversions?

remote swallow
#

no

spare hazel
#

no for no it will not or no for no need to convert?

remote swallow
#

no need to convert

spare hazel
#

alright thanks

#
            lore.add(ChatColor.AQUA + "|- " + enchantment.getRarity().color + Utils.getFriendlyText(enchantment.getEnchantment().getKey().getKey()) + " " + RomanNumber.toRoman(enchantment.getLevel() + (enchantment.getLevelMultiplier() * level)));
``` so it will be this?
sleek estuary
#

Which option offers better performance? 1 world for fishing and another for a separate mine. or 1 world for mine and fishing, where the mine is 1k 100 1k for example and fishing -1k 100 -1k

tight garden
#

I would imagine the single world

spare hazel
#

worlds are more heavy than chunks i think

young knoll
#

Yes but it’s not really a big difference

sand spire
young knoll
#

Well now you are talking about 2 worlds vs

#

Like 100

sand spire
#

xd

sleek estuary
young knoll
#

Skyblock only runs a few worlds per server

#

Idk how many, I think I read like 5

sand spire
#

i'm pretty sure the personal islands are seperate worlds, you only have the players visiting the island on tab and I read a devlog

sleek estuary
#

Can anyone tell me if worldborder loads the chunks I want? for example, do I want to load some chunks in 1000 100 1000, others in -1000 100 -1000 or am I forced to load the entire area between 1000 and -1000?

spare hazel
#

but if you want the most performance you should create a ubuntu dockerfile that runs a server with a configurable port, two servers one for fishing and one for mining the u will use kubernetees to launch 2 new servers each 10 players and you will make a custom bungeecord network that will intergrate with the kubernetes to balance load and create a fully custom player data system and you will store the player data on a MongoDB database and sync the servers

young knoll
#

And only so many run on one server

sleek estuary
spare hazel
sand spire
spare hazel
young knoll
#

You don’t need all that fancy dynamic allocation until yknow

#

You actually need it

sleek estuary
spare hazel
#

i feel like i need it

#

||my server averages 5 players/day||

sleek estuary
#

😂

young knoll
#

With a simple proxy and like, a redis cache you can easily do 100+

young knoll
#

Latest

sleek estuary
#

1.8 is much cheaper 😂

spare hazel
#

Log4J entered the chat

young knoll
#

I said 100+

#

Of course what type of gameplay you are doing also matters a lot

#

For skyblock you still need most vanilla mechanics intact

spare hazel
#

you either get your players/server hacked or use a later version OR spend 100 BILLION dollars buying mojang and forcing them to fix log4j on 1.8

sleek estuary
#

the hypixel .jar doesn't run on spigot 1.8?

#

they haven't been hacked yet 😅

young knoll
#

Tbh we have no idea what it runs on

spare hazel
#

1.7.2

young knoll
#

Probably isn’t even close to a real minecraft version anymore

spare hazel
#

1.7.10

#

they patch it so it fixes every single bug

young knoll
#

You can also just

sleek estuary
young knoll
#

Fix the log4j exploit with a logger config file

#

It doesn’t let you run /ver anymore

spare hazel
sleek estuary
spare hazel
#

its so different i better say its a spigot spoon rather than a fork

young knoll
#

If I grab a 1.8 jar and add 1.12 features to it

#

Is it still a 1.8 jar

spare hazel
sleek estuary
#

if the minecraft api is completely obfuscated, how did the bukkit developers do it?

young knoll
#

“Api”

#

There is no api

#

Anyway, people decompiled and remapped the code to be somewhat readable and went from there

sleek estuary
# young knoll There is no api

In the context of programming, "API" stands for "Application Programming Interface". An API is a set of rules and definitions that allow different software to communicate with each other.

Basically, an API defines how software components should interact. This includes what operations can be performed, what data can be accessed, and how it should be formatted. APIs can be used to allow communication between different parts of the same software, between different software, or even between different operating systems.

APIs are fundamental to modern software development, as they allow developers to create applications that easily integrate with other systems and services, without needing to understand the internal details of those systems. This promotes code reuse, simplifies development, and makes software easier to maintain.

hazy parrot
sleek estuary
#

minecraft didn't make an api, but it is possible to communicate with the game, so when it says minecraft api it is the code itself

spare hazel
#

but its crazy how they made out a thing from something like a.c(b/g)

#

anyways gtg bb

remote swallow
#

What they code it has real mappings so real names

young knoll
#

Ye olde spigot mappings

#

Even before that was mcp mappings

sleek estuary
#

whats have better performannce?

young knoll
#

setBlocks

sleek estuary
# young knoll setBlocks

but replace method filters the blocks, but I don't know if the cost of setting fewer blocks is worth the cost of the filter

young knoll
#

Probably not

#

Idk, you’re setting them without triggering physics updates

reef jasper
#

help

young knoll
#

If you want to know, try timing them

reef jasper
#

whats the captxha plugin ill send in dms

cursive kite
#

Why is my custom entity spawning invisible?

        super(((CraftWorld)world).getHandle());
    }

    @Override
    protected void initAttributes() {
        super.initAttributes();

        setSize(3);
    }```
young knoll
#

Do you add it to the world

#

And set its position

cursive kite
#
                new SlimeListenerEntity(player.getWorld()), player.getLocation());```

```public static LivingEntity spawnEntity(Entity entity, Location loc) {
        entity.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
        ((CraftWorld)loc.getWorld()).getHandle().addEntity(entity);
        return (LivingEntity) entity.getBukkitEntity();
    }```
#

It is there because I put pressure plates and Its talking about... just i cant see it lol

young knoll
#

You’d have to debug further then

#

Is it actually invisible (does it appear in spectator mode) or was it just never sent to the client

cursive kite
#

Appears to not be sent to client as it does not show in gm3

young knoll
#

Alright then it may be an issue with the tracking system

#

Does your code for the entity do anything else

cursive kite
#

nope just spawning with a command for now to test it

young knoll
#

Does it use the standard EntityType.Slime

cursive kite
#

where woukd it? i posted all the involved code lol

young knoll
#

Wait what version is this

#

I know for a fact latest requires an entity type for the entity constructor

short pilot
#

Hey guys how do you prevent a dragon egg from teleporting on right click/left click?

cursive kite
#

this one is an old plugin.........1.8

young knoll
#

Ah

#

Well good luck

young knoll
#

Cancelling the PlayerInteractEvent should work

#

But you won’t be able to mine it

marsh idol
#

Hi, I just got back into java dev and am trying to get a plugin going. I have IntelliJ with the Minecraft Plugin plugin installed, and am creating a plugin with Maven, it's being built on my Jenkins server, however when ever I load up my test server with the plugin installed it kicks out an error shouting about "plugin.yml" is not found.

Having said that; plugin.yml is absolutely there. I opened up my .jar with Java Decompiler and I've noticed a very odd file structure that I think is the issue here. Is this right? https://i.imgur.com/Ptbtg9D.png

Here's the console error: https://i.imgur.com/VhNDYZy.png

kind hatch
#

Your jar file didn't compile correctly.

#

It's more or less an exact export of your IDE structure, which it shouldn't be.

#

?paste your pom

undone axleBOT
marsh idol
#

Note: I have moved the location of "resources" to multiple locations to check if that was the issue

flint coyote
#

Would it be reasonable to have a single Inventory instance for GUI that is shared between different players?
So they all see live updates?
Or should I create multiple inventories and update them all in a loop?

drowsy helm
#

plugin.yml should be in the root folder

kind hatch
#

Did you copy this jar file from your jenkins instance?

marsh idol
#

You can see the last "plugin.yml" in the above screenshot, that's directly in the root folder, yet when compiled it tosses it in "main"

wet breach
marsh idol
wet breach
#

What does your pom xml look like?

kind hatch
drowsy helm
#

I love when people think out and give backup logs and images for their questions 🙂 (not sarcasm)

marsh idol
young knoll
drowsy helm
#

why not compile locally for now?

wicked sinew
#

If I have user-placed blocks generating items on top of them every X interval (unique per placed block) -- would the best way of generating those items be;

onChunkLoad (or similar)
  readFile (Get block location and rate from file)
    - see if any "generating blocks" are in that chunk
    - then spawn the item above that block's location

I struggle with thinking of the "most optimal way"

flint coyote
wet breach
#

This should resolve your issue

marsh idol
young knoll
#

Is the update meant to be global

wet breach
#

You only set those if you have those things not in usual places

drowsy helm
#

If its intelliJ theres a big M on the topish right click that then run mvn package

flint coyote
#

yes so they don't override their changes. It's an admin UI

drowsy helm
#

or just run from console

flint coyote
#

I'd like them to all be up2date whenever something changes

young knoll
#

Then yeah a single instance seems fine

drowsy helm
#

could you show the original file structure in your IDE

wet breach
#

You also want to run package goal. Should compile and make jar

drowsy helm
#

before compiling

flint coyote
#

alright. Just gotta figure out how to deal with multi paged inventories then (so they all can open seperate pages) but I'll find a solution. Thanks!

wet breach
drowsy helm
#

resources should be same level as java

flint coyote
wet breach
young knoll
#

I prefer to use a collection of items

#

But yeah multiple inventories works

marsh idol
echo basalt
#

wsup

marsh idol
#

Oh no I see what you mean

wet breach
drowsy helm
#

one level up

#

not sure if it matters for maven but you can also flag it in IDE as a resource folder

drowsy helm
#

yeah because its a package

kind hatch
#

You can move the files directly though your file manager.

#

IJ should update accordingly.

flint coyote
#

I also have a collection at the moment.
But I guess I'll have shared inventories that automatically update on changes for the one-page inventories and non-shared ones with extra code for updates on paged ones.

echo basalt
#

Oh we're talking about inventory frameworks

marsh idol
#

resource folder is gone completely

young knoll
#

You can’t send the same view to multiple players afaik

#

openInventory always makes a new view

kind hatch
echo basalt
#

Paginable menus should all be done in the same Inventory instance in order to not reset the cursor

flint coyote
kind hatch
#

It just needs to be moved up one directory level.

young knoll
#

The cursor doesn’t reset anymore

kind hatch
#

/src/main/java
/src/main/resources

echo basalt
flint coyote
drowsy helm
#

Mark as resource in File>Project Structure> Modules

and


        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

in build tag of pom

#

thats how i have mine setupo

flint coyote
#

Oh that's actually an idea. I could add the enchantment effect to it to show it has been tempered with.

kind hatch
marsh idol
wet breach
kind hatch
marsh idol
wet breach
#

Change java version in pom to 17 minimum

marsh idol
#

^ 1.17

wet breach
#

Change to 17

marsh idol
#

instead of 1.8

young knoll
#

Just 17

marsh idol
#

ok

young knoll
#

They dropped the 1.x at some point

marsh idol
#

Done, still working on the Modules bit

#

can't find "Project Structure"

wet breach
marsh idol
#

Okay, doing a clean build now

kind hatch
#

Just for clarity sake, you are using the maven tools and not the IJ artifacts correct?

wet breach
#

Guess we find out lol

drowsy helm
#

using jenkins, so i'd assume so

wet breach
#

But i will let you guys take care of the rest. Have to go fetch a truck lol

rough ibex
#

Trucks are pretty heavy to pick up

marsh idol
#

Okay, so moving from 1.8 to 17, that was the only change that I did, that worked. plugin.yml and config.yml are now present in the jar file

kind hatch
#

Hey @young knoll, you remember how you mentioned fixing the spigot update checker to actually check against recent changes instead of just checking if a month has passed?
I figured out how to do that, but I was wondering how much more needs to be added to a system like this.

I was initially wondering if there should be a threshold that needs to be passed before it causes the startup delay, but now I'm wondering about urgent updates and how those should be handled.

young knoll
#

¯_(ツ)_/¯

#

Does it cause significant startup delays doing the web request

#

Tis another concern

marsh idol
#

So why did that fix it? Can someone explain this so I know for the future.

kind hatch
#

It can as evident from work with BuildTools. 😢
However, there may be some checks we can do beforehand.

marsh idol
young knoll
#

Could go with a small timeout ig

drowsy helm
young knoll
#

Alternatively do it fully async, but then you can’t delay startup

wet breach
marsh idol
wet breach
#

Lmao

kind hatch
marsh idol
#

Thank you everyone, I appreciate the support. I'm sure I'll be back again.

wet breach
#

Glad your issue is fixed now though

#

Have fun making plugins uwu

marsh idol
#

Oxymoron.

kind hatch
#

I was thinking about the async thread, but yea... no way to do the startup delay then.

#

Unless I just want to say fuck whatever is going on currently in the main thread. :kek:

drowsy helm
#

get them a visa

#

You'll have to send a fake border packet to the player you want to show the border to

#

not sure if theres any spigot api methods to fake it though

wet breach
#

World border?

drowsy helm
#

or is it you want all players to be able to go through?

wet breach
#

Use world guard

kind hatch
#

Player#setWorldBorder() exists though. :3

drowsy helm
#

there ya go

river oracle
drowsy helm
#

world border is clientside though so they wouldn't be able to pass throug hit if it were visible

wet breach
#

Set world border larger make a region less then it and then you can designate who can or cant leave that region border

young knoll
#

I suppose you could just not delay startup and go with a massive red message

#

Maybe throw in an ascii art of md_5 for good measure

kind hatch
#

Do you know off the top of your head what the experimental jar does with it's startup message?
Does it also delay?

wet breach
#

Even if no updates happen if a certain amount of time has passed it would still show that message lol

kind hatch
#

That's not ideal. lol

wet breach
#

Yeah well that is how it works. The time is set at compile time

kind hatch
#

Yea, but I'm wondering about the experimental jars in specific in order to maintain consistency.

wet breach
#

The other way it shows that message is if it detects updates

wet breach
young knoll
#

Spigot does not explicitly check for updates

#

(Other than /ver)

wet breach
#

Thought it did detect if there was a new version

kind hatch
#

Only with the command. Not at startup.

wet breach
#

Interesting

#

Alright well its based off time then lol

kind hatch
#

Current cb impl.

#

I try and fix. :p

obsidian plinth
wet breach
#

Lets see if you can find it

young knoll
#

Mhm

#

I mean it’s the first line in the screenshot

#

:p

kind hatch
#

I know. :3

#

Shouldn't it actually check against current versions instead of time alone?

wet breach
#

Um reason is in case of no internet

#

Otherwise you wait for timout of 30 seconds

kind hatch
#

Can't we control the timeout?

wet breach
#

Sure

young knoll
#

Yeah you can set it to whatever

#

3 millisecond timeout

wet breach
#

You could set the tcp timeout to anything all the way up to like 24 hours if i recall

kind hatch
#

Gonna move to the datacenter rq

#

So hear me out.

#

If we need the timeout to be 30 seconds, then that should already act as a delay of sorts.

wet breach
#

However not sure if increasing timeout in application bypasses the system timeout though

kind hatch
#

That can be used.

#

There's a system timeout?

wet breach
#

Yes the OS imposes timeout on connections

#

Just not sure if applications can go beyond that. Setting it lower shouldnt be an issue however

young knoll
#

The alternative is to not delay startup but print a big red message

#

Or idk, just nuke the server when the result is ready

#

Kek

wet breach
#

System typically has a timeout of like 1 minute or something like that. Some linux os's still have values of 5 minutes if i recall. Longest timeout value set by the system that i have seen was like 30 minutes but dont remember which os that was

#

Which is insane lmao

kind hatch
#

Is the only way to check connectivity to ping another site?

#

Cause if there is a way around that, it could just skip the web request all together if it has no connection.

#

Wait, what if I check against network interfaces?

wet breach
kind hatch
#

Is that not it's own form of web request?

#

Or is there a way to do that quickly?

wet breach
#

Yes but you do a icmp on dns address or a known good dns address

#

Tcp ping is slower and most hosts except dns block icmp

#

Icmp is better because no tcp overhead.

kind hatch
#

Is that still going to be a blocking request though?

agile anvil
#

Did something changed between version 1.20 and 1.20.4 for the entity spawning?

I get a NoSuchMethodException on
'org.bukkit.entity.Entity org.bukkit.World.spawn(org.bukkit.Location, java.lang.Class, java.util.function.Consumer)' in older versions.

#

I checked the docs and the method of RegionAccessor seems unchanged between versions

#
itemDisplay = world.spawn(location, ItemDisplay.class, item -> {
  // Some stuff here
});
worldly ingot
#

We changed it from a Bukkit Consumer to a Java Consumer

agile anvil
#

Ah ㅠㅠ

worldly ingot
#

If you compile against the 1.20.(1?) API, it won't be able to run on versions before that due to the change. If you compile with API versions before that change, it will work across all versions

#

Pre-change it will compile looking for org.bukkit.util.Consumer and we can ASM transform that. Post-change it will compile looking for java.util.function.Consumer in which no method with that signature exists until after that change

agile anvil
#

Indeed the Consumer is from Bukkit before that. Alright thanks I'll change the API version then

worldly ingot
#

Yeah I don't remember which minor version exactly it was that made the change

#

Could check the commit history. It was definitely a 1.20.x version though

young knoll
#

Imagine having your own consumer class

agile anvil
#

It was 1.20.2

#

Don't worry I'll just change the version to something I know was using bukkit cons

#

Since the import is implicit you can't see that without knowing ahah

wintry lynx
#

So is there no way to take an item stack and either hurt an entity as if it was used or to just get the attack damage of said item?
Id prefer not to manually code every enchantment lol

astral scroll
#

hello

#

can i get some help?

#

when i try to get a list from messages.yml is empty

#

the path is ok tho

#

this is the path

flint coyote
#

?nocode

undone axleBOT
#

It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

flint coyote
#

ah you were faster :)

astral scroll
#

the empty exception i made is being thrown

flint coyote
#

what is the path you call the function with?

astral scroll
#

commands.eco.pay.cool and commands.eco.pay.also-cool

#

both of them in different usages

agile anvil
#

Where do you initialize the var configuration?

astral scroll
#

onEnable

agile anvil
#

Can you show us?

astral scroll
#

and then

#

( scoreboard config works perfectly )

agile anvil
flint coyote
#

is the path to your messages.yml correct? Where's that?

astral scroll
#

is in the dataFolder

#

of the plugin

#

oh wait

flint coyote
#

no where's the path inside your code

astral scroll
#

oh

flint coyote
#

Make sure you don't mix up yaml and yml. You did that in your paste

astral scroll
#

main/resources

#

im using .yaml

flint coyote
#

Alright

astral scroll
#

wait

#

i didnt delete

#

messages.yaml

#

and it didnt update

#

it works

#

lol

#

kinda buggy

#

but works

flint coyote
#

Sounds good :) I'm sure you'll manage to fix the placeholders

astral scroll
#

thanks btw

wet breach
#

Best effort is used. If java is able to use icmp it will otherwise it will use tcp on port 7 which is still a privileged port so can still fail if the application doesnt have sufficient privileges

astral scroll
#

kinda hard for me

#

HAHAH

#

but

#

wait

#

i mean i have a list of messages, iterate over that and then in every iteration use the placeholder in that message

#

and then add it to a new list of messages

#

and return that

flint coyote
#

That looks overcomplicated.

Why don't you just use replace in your double loop?

#

and I'd prefer streams

astral scroll
#

i've tried too much

#

and idk what is happening now

flint coyote
#

I mean it does look right to me. It should work. Unless the .use() does some weird stuff

#

why don't you just use .replace()? Is a Placeholder a Closeable interface?

flint coyote
#

oh I see. I thought it is the "use" function of a closeable interface

#

got confused by the name

#

your break is the problem

#

You are breaking once any string is blank

#

So you are not replacing any further strings.
So unless all of them have text you are aborting

#

It should be a continue

astral scroll
#

oh

#

damn it was that

#

got it working

#

thanks!

flint coyote
#

yw

flat gull
#

Guys im searching for a plugin where i can spawn skeletons with spawners but at daylight

#

Does anyone know one?

kind hatch
# wet breach Common way is to check dns

When you say check dns, do you mean check locally through the machine's resolver or literally just pinging a popular dns server like cloudflare (1.1.1.1) or google (8.8.8.8)?

wet breach
#

Wouldnt make much sense to go through machines resolver of you are using icmp. Just need an address that is known to be outside the hosts network

#

Pinging google might be easier to do then trying to fetch the dns of the adapter

#

So you would create an inetaddress object of googles ip and then use the method to see if it can be pinged

#

You can set with the method max hops as well as timeout

kind hatch
#

I seem to be getting weird results with it.

#
public static void sendPingRequest(String ipAddress) throws UnknownHostException, IOException {
    InetAddress address = InetAddress.getByName(ipAddress);
    System.out.println("Sending Ping Request to " + ipAddress);
    if (address.isReachable(5000)) {
      System.out.println("Host is reachable");
    } else {
      System.out.println("Sorry ! We can't reach to this host");
    }
  }
#

#getByName() says it supports the regular web format. www.google.com
However, it keeps failing.

#

When I do a manual ping to google.com I'm able to get a response.

eternal oxide
wet breach
#

If you are going to use getbyname it makes no sense to isreachable because getbyname requires a dns query

#

Just use 8.8.8.8 as a configurable default for checking purposes and dont do any resolving

kind hatch
#

I’ll attempt more tomorrow. Gotta get to sleep for work in the morning.

icy beacon
wet breach
#

That is the goal people have right?

icy beacon
#

I wish. If I don't get a job at an IT company before I'm 22, realistically I get drafted to serve at the Russian army

wet breach
#

Should probably move

icy beacon
#

I'm 16

#

Not feasible really

wet breach
#

Depends where you move to lol

icy beacon
#

Additionally I probably won't be able to legally move until I'm of the age of 30+ (where I can't get drafted) or unless I am proven to be uneligible (e.g. some serious illness or smth)

#

Depends on what laws they start passing lol

#

And to move you kinda need money and to know the language. I currently only know English and N4 Japanese

wet breach
#

Just become a refugee. Go to another 1st world country. Get adopted by rich people

#

Problem solved

icy beacon
#

Risky shit 😬

wet breach
#

Worst case is you just end up in another 1st world country where your prospects of needing to serve in the military is less

icy beacon
#

Well in my current 25 year plan for the future I want to travel to Japan for about 3 months to form an opinion on whether it's cool to reside there, and do the same with Germany

#

Travelling I can definitely do safely

#

And if things go right I might migrate randomly lol

wet breach
#

Travel to the US uwu

icy beacon
#

I do not want to pay 500000$ for an ambulance

wet breach
#

No one does

icy beacon
#

Welp there you go

wet breach
#

The cost just goes to your insurance and that is assuming it was a private ambulance. Second, medical debt is one those that is extremely difficult to collect on more so if it was incurred due to an emergency

#

The people who claim they pay for an ambulance are the ones that dont know how to bill their insurance lol

icy beacon
#

I've heard plenty good things about insurance companies specifically in the US 😬

wet breach
#

Its not as bad as people perpetuate really. Many of the low income people dont pay medical costs or a large portion of it as its usually subsidized by the goverment or the medical facilities or both

#

Mainly because you cant collect debt from someone who has no money anyways

#

Also known as judgment proof

icy beacon
#

Well one more thing I dislike about US (and consequently my current country) is its eagerness to partake in conflicts

wet breach
#

Thats the US military for you. We been conducting war for like 30 years straight

#

So we became really good at it lmao

icy beacon
#

Yep and I really really don't want to be a part of it

wet breach
#

Then dont. In the US there is no requirement to join

icy beacon
#

Who said things won't spiral out of control?

wet breach
#

Unless we have a draft but we havent had a draft since ww2

icy beacon
wet breach
# icy beacon Who said things won't spiral out of control?

Even if it does. The citizens of the US have a say. While you could technically punish some who dont follow the draft you cant punish millions either. Also a draft can only happen if congress agrees to it and we have formally declared war on someone

icy beacon
#

Fair point

wet breach
#

Also the US and canada is pretty well protected in terms of anyone wanting to attack that it is essentially suicide for anyone who tries

#

Pretty sure there is a couple eu countries similar in that regard

icy beacon
#

Well I guess I'm still yet to do deeper research on countries to migrate to, like my itinerary for the last 18 months has been "Japan, Germany or Iceland". The US might be fine, I'm just doubtful about it, probably actually because I know it more than any other country I researched. E.g. I'm watching a Tyler Oliveira video right now at this instant and all the present problems are evident, meanwhile I've only read some articles on the countries I've been thinking of, because I have yet to learn the native languages to really be submerged into content. You bring up good points, so looks like I'll have to do new research lol

wet breach
#

Idk what present problems you refer to but even if you are not a citizen here you still have rights. This cant be said of some other countries.

#

Japan might be nice to visit but you need to have some education as far as i am aware to get a decent job there even if the job doesnt really require the education. Germany as far as i have been told is decent for migrating to just dont pester the police lol

#

Canada may even be an option but it does depend where in canada. I probably wouldnt advise mexico

icy beacon
#

Well since the US is really open to free speech, all the true colors of the country are discoverable, and by that I mean that there are just as many negative information mediums as there are positive ones. I've learnt about the healthcare problems, I've learnt about the prominence of political discrepancies, I've discovered Tyler Oliveira and tens of other outlets that talk about lesser known stuff. The amount of negativity spread around the US has kind of built a bias against me, as opposed to Germany, Japan or Iceland, which of course have their weak points, but I've heard a magnitude more positive things than negative. And if I talk shit about Russia publicly I may not even see the day I migrate 💀

icy beacon
wet breach
# icy beacon Well since the US is really open to free speech, all the true colors of the coun...

There is health care problems but its mostly for the low income people like super low income. And it makes sense because the US government cant just provide free healthcare and it cant really force the states to do so either unless they foot some of that bill. Some states cant afford that cost no matter what and the states that could would need to create new taxes for it. However many states do subsidize healthcare for the low income in various ways. Also you cant be denied emergency treatment either regardless of financial status

#

For the US government to provide health care to everyone it would cost somewhere in the trillions to do it

ocean hollow
#

how to find out what entity the player is looking at?

        RayTraceResult rayTraceResult = player.getWorld().rayTraceEntities(player.getLocation(), player.getLocation().getDirection(), Bukkit.getViewDistance());
        Entity entity = rayTraceResult.getHitEntity(); // HERE IS PROBLEM
        if(rayTraceResult.getHitEntity() != null && entity instanceof LivingEntity){
            ((LivingEntity) entity).setHealth(((LivingEntity) entity).getHealth() - damage);
        }

#

cuz it gives null

icy beacon
#

That's understandable, though can it not be done via taxes? Not totally free of course but at least to bring the prices to an adequate range

wet breach
#

For some what decent insurance it costs like $100-$400 depends what options you want or dont want

#

I can easily afford with my current job $400 a month for insurance

icy beacon
#

What do you think of the view that "insurance companies are never your friends", in the sense that they'll do everything in their power to avoid paying the bill? And suing a potentially multi-billion dollar company is basically never successful

wet breach
#

Once you hit that limit its a case by case thing whether your insurance is going to continue to pay. But this is where we get into the realms of finance and many americans not taught proper finance and everything that is at their disposal

wet breach
ocean hollow
#

if(rayTraceResult == null)return;?

wet breach
#

Probably best if you first checked if entities are even nearby

#

If they are find the ones ahead of the player and then do your raytrace to those entities

icy beacon
ocean hollow
#

I read somewhere that it can rayTrace can hit the player himself, is this true? Do I need to do a check?

wet breach
wet breach
icy beacon
#

I'm asking because these are the first photos I get when I look up "us healthcare bills". Surely this is not ok and is an exception as opposed to the norm?

wet breach
icy beacon
#

Private hospitals I know of yeah, I think every major country has some 😄

wet breach
#

So lets assume the er is not public. You have to be a kaiser member to even go there

#

If the people didnt like kaiser they could just not pay to go there

#

But that bill is not exactly what they owe rather what was billed. Their membership covers the majority of that cost

icy beacon
#

I see, okay. Though the prices are still crazy e.g. $1660 for anesthesia

#

Last question then