#help-development

1 messages · Page 635 of 1

chrome beacon
#

?scheduling

undone axleBOT
wet sparrow
#

the error is that it doesn't go back to the original block. it is as if he did not enter the if.

wet sparrow
tender shard
#

what is game.typedBlocks?

wet sparrow
chrome beacon
#

and where is that

brisk estuary
#

I'd have to check if the player is moving inside the task right? So when a player is stopped the particles stop appearing too

tender shard
wet sparrow
#

no

chrome beacon
tender shard
#

does it print "Run Task"?

wet sparrow
#

yes. "Run Task"

chrome beacon
#

That's one if statement with a (weak)hashmap

wet sparrow
#

how i can?

dim adder
#

thx

wet sparrow
#

??

near mason
#

whats ConcurrentHashMap

lilac dagger
#

it's a multiple thread hashmap

#

it can be edited by multiple threads

near mason
#

oh

onyx fjord
dim adder
#

How can i make that a player doesn't loose his hunger

tender shard
#

cancel FoodLevelChangeEvent

#

if the event's getFoodLevel is less than the entity's current food level

sterile breach
#

hello, in a gui, it's a bad thing to make a
if to check every possibility of what the item might be? I imagine so? Is there a technique to avoid doing this?

chrome beacon
wet sparrow
#

so?

tender shard
#

e.g. "next-page" etc

chrome beacon
sterile breach
chrome beacon
#

Then do a massive switch statement with PDC data 🤷‍♂️

sterile breach
#

else i can make a switch?

mellow pebble
#

how to decide should event handler have high or low priority or does it even matter that much if we specify it ?

wet sparrow
#

what do you need to see?

chrome beacon
chrome beacon
mellow pebble
#

how do you decide if it should be like highest or high or whatever option

lusty cipher
#

is there no event for when a book is placed onto a lectern?

#

do I just have to have a special check with PlayerInteractEvent and check if the clicked block is a lectern?

ivory sleet
wet sparrow
#

what class. the listener?

chrome beacon
#

Where ever that code is

#

or just put the entire project on github so we don't have to has for more code multiple times

wet sparrow
#

is a multi modular project

#

but i need help only whit this event.

chrome beacon
#

eh I'm just going to do smth else

tender shard
#

Lol

chrome beacon
#

I'm not going to waste another half an hour asking for more code

twilit creek
#

Hello, i have a problem,

    private double calculatePrice(User user, double numTreats) {
        double treatPrice = ((user.hasCustomObject("treats") ? user.getCustomObjectInt("treats") : 0.0) * 100.0) + 100.0;

        treatPrice = Math.min(treatPrice, 10000);

        return numTreats * (treatPrice + treatPrice + (numTreats - 1) * 100.0) / 2;
    }

at this line:

return numTreats * (treatPrice + treatPrice + (numTreats - 1) * 100.0) / 2;

I want to add the price + 100 for every treat, but if the price goes higher than 10000 it should be capped at 10000 and every next Treat should cost 10000. I cant use for loops because if my number to buy is like: 1000000000000.0 it crashes the Server.

#

You can simple use an Proxy System with functions to reset the server after a match ends.

mellow pebble
#

dont let server save the world so if it is not saved there will be no other blocks after you restart server

twilit creek
mellow pebble
#

or if you would take different approach but idk if it is better you can listen while game is on for block place of each player and save it into a map and on game end event you can just go through maps or arrays or whatever you want to use to store those blocks and just remove them one by one which will be quite fast 🤷🏻‍♂️

mellow pebble
twilit creek
mellow pebble
twilit creek
eternal oxide
#

just multiply then Math.min

mellow pebble
eternal oxide
#

no, university is only for indoctrination

remote swallow
#

Did you do cs in college

eternal oxide
#

no cs wasn't a course when I went to college

wet breach
remote swallow
#

Damn

wet breach
pulsar parcel
#

Hello, I am trying to check if player has broken wool, and that with switch case get what color is it. My code looks like this, but I am not sure about LEGACY_WOOL. I looked on Spigot documentation, but couldn't find any description. So maybe it's not even possible to do it this way. Thank's for any help

if (e.getBlock().getType().equals(Material.LEGACY_WOOL)) {
final DyeColor color = ((Wool) e.getBlock().getState().getData()).getColor();
switch (color) {
case MAGENTA: TeamData.addWool(Groups.MAGENTA);
break;
case LIGHT_BLUE: TeamData.addWool(Groups.AQUA);
break;
case LIME: TeamData.addWool(Groups.LIME);
break;
case YELLOW: TeamData.addWool(Groups.YELLOW);
break;
case BLUE: TeamData.addWool(Groups.BLUE);
break;
case BROWN: TeamData.addWool(Groups.BROWN);
break;
case RED: TeamData.addWool(Groups.RED);
break;
case BLACK: TeamData.addWool(Groups.BLACK);
break;
default:
break;
}

onyx fjord
#

can PlayerJoinEvent message somehow be component?

#

(setter)

pulsar parcel
wet sparrow
#

Versión

onyx fjord
#

1.19.4

tender shard
onyx fjord
#

aight

#

whats the internal code for it

#

is it just bukkit broadcast?

tender shard
#

just loop over all online players and do player.spigot().sendMessage

#

that takes components

onyx fjord
#

broadcast also does

tender shard
#

it does? oh well then that works too

#

i rarely use components

onyx fjord
#

aight

#

yeah me too but this is special case

twin venture
#

hi question , iam trying to think of a system to make for my plugin :

  • Timed Items , so its a shop , when you buy the item it will have a time in the lore [the time when it will expire]
    after that , when ever you join , interact click , or damage the item , it will check if its expired .
    what's the best aproch to go with , what Time utils i can use ?
wet sparrow
#

Use a date

#

Date

#

Of java

twin venture
#

what i was thinking is a :

cinder abyss
#

Mojang mapping is incredible...

#

thanks @chrome beacon

onyx fjord
#

would be better if they didnt obfuscate at all 🙂

wet sparrow
#

Expired time? In the end time this will be deleted?

twin venture
tender shard
cinder abyss
twin venture
#

it will check , when player join if its expire , when player damage the item , when player do other stuff with the item ..

onyx fjord
#

why obfuscate when you give mappings anyway tho

tender shard
chrome beacon
onyx fjord
#

how big the difference is

wet sparrow
#

Mmm

cinder abyss
chrome beacon
#

No idea

onyx fjord
#

isnt it like 10 megs

wet sparrow
#

Looks good

#

Mmmm

cinder abyss
tender shard
#

I find this quite annoying

cinder abyss
wet sparrow
#

Add only most version used

tender shard
#

i got people who complain if something doesn't work on 1.16.2

#

no idea why they use 1.16.2

cinder abyss
#

for having brute piglins without bug fixes

tender shard
#

this dude is using 1.16.3

wet sparrow
#

Delete support for this version

lilac dagger
chrome beacon
cinder abyss
wet sparrow
#

Hahahahah

#

What is this plugin?

chrome beacon
#

CombatLogX keeps getting 1 star reviews from rule breakers in our discord

tender shard
cinder abyss
chrome beacon
#

They 1 star because they get muted for a bit

quiet ice
tender shard
#

this happened yesterday on my server lol

#

"yeah sorry" lol

quiet ice
#

Isn't that plugin OS?

tender shard
#

no

cinder abyss
quiet ice
#

ah

cinder abyss
tender shard
#

it was open source but once I removed the github link and raised the prices, much more people bought it lol

chrome beacon
tender shard
#

their cracked version only supported 1.16 anyway

cinder abyss
#

A little question :
Do Herobrine is autorized in spigot public resources ?

tender shard
cinder abyss
#

I think I'm not sure

wet sparrow
#

Hahahaha

#

Lol

chrome beacon
#

They don't care

cinder abyss
#

perfect, I'm adding herobrine in my plugin LUL

#

using nms

tender shard
#

just call it Heroacid

cinder abyss
#

HeroBring

tender shard
#

heroin

chrome beacon
#

Herobrian

cinder abyss
wet sparrow
#

Dude's I need to make a regeneration system for a arenas like block to block. Anybody can help me?

chrome beacon
#

Not without any information

wet sparrow
#

What information? Only need the use. And proposed

#

I need to make API for plugins like bungee multi arena world

cinder abyss
#

Where can I find the 1.19 equivalent of 1.18's ClientboundPlayerInfoPacket ? (a doc for this ? a tip to find it ?)

tender shard
#

it's still called like that

cinder abyss
#

(I know it's ClientboundPlayerInfoUpdatePacket but something to find it easily will be better)

tender shard
#

oh wait I only checked 1.19.2

cinder abyss
#

there are different errorsystem

#

so I need to do it for 1.19.2 and 1.19.1 ?

#

with BuildTools ?

#

(who is making my pc burning)

wet sparrow
#

😂

cinder abyss
#

maybe I need to enter a -Xmx value

#

but I think it's the processor

chrome beacon
#

Yeah it's the CPU having to decompile

tender shard
#

20 seconds on m2 max 🥲

cinder abyss
#

not generating docs and sources LUL

#

I'll remove this parameter

chrome beacon
#

Get a better cooler?

cinder abyss
#

"C:\Program Files\Java\jdk-17\bin\java" -jar BuildTools.jar --rev %Input% --generate-docs --generate-source %remappedArg%

cinder abyss
#

and losing 500$ for this

#

just to compile

chrome beacon
#

You don't need a new motherboard for a new cooler

cinder abyss
#

I used burning for dying

chrome beacon
#

If it's just the CPU being slow then just go do something else while it's running

cinder abyss
#

well, my english is bad so I need to contourn the path

chrome beacon
#

I usually just watch youtube or smth

#

My i5 3470 could handle it just fine

#

Your CPU probably can too

cinder abyss
#

we aren't in the same group LUL

chrome beacon
#

Laptop 💀

cinder abyss
#

3* faster without overclocking for you LUL

remote swallow
#

you are not havinga good time are you

cinder abyss
#

I saw you and I have the answer... idk

chrome beacon
cinder abyss
remote swallow
#

add more sysouts or see if its any issues with the url building or something

chrome beacon
#

That won't save much time

#

Majority is the decompile, patching and recompile

remote swallow
#

making stuff thread safe is hard tbh

#

its either something throwing an error that isnt caught or its some jank

cinder abyss
remote swallow
#

kek

#

add a impl some form of a queue

#

probably?

thin venture
#

Is it possible to detect when someone is unbanned? or what ways could I go about doing that?

hybrid spoke
remote swallow
#

where does it not changee

#

activity is like the playing Minecraft

echo basalt
#

Man ?learnjava

#

Beuh bot

#

?learnjava

undone axleBOT
chrome beacon
#

We've sent that so many times now

#

They don't care

remote swallow
#

ive sent it like 5 or more times today

echo basalt
#

You've been asking for help every single night writing no more than 5 lines of code per day

glad prawn
#

xd

chrome beacon
#

It's also just copying tutorials

echo basalt
#

We say this not out of ignorance but for your own benefit

#

?spoon

undone axleBOT
#

Spoonfeed a newbie for a day and they'll come back with more questions. Teach them to find their own answers and you'll both be better off: you won't get stuck answering the easy questions and they'll be much more productive than before.

chrome beacon
echo basalt
#

N o

#

You're refusing to help yourself

remote swallow
#

you have been sent the learnjava links so many times in the past 4 days youneed to go and learn java

echo basalt
#

We aren't your personal code assistants and we're giving you pointers on how to learn to code

remote swallow
#

?di

undone axleBOT
echo basalt
#

Your problem doesn't matter to us at all as much as your ability to problem solve

young knoll
#

I'm also good at problem causing if needed

pseudo hazel
#

yes ofc ,you have to be able to provide your own work ofc

mellow hamlet
#

i have been ip banned from spigot MC website and i have no idea why, how do i get help??

remote swallow
#

are you using a vpn

mellow hamlet
#

i dont think so

#

oh yes i am using opera GX

#

so yes

#

thank you

pseudo hazel
#

if you are not aware of using a vpn you likely arent xD

#

oh or that

twin venture
#

hi uhh , i have weird problem :

why it does not work ?

#

this check does not work .-.

#

should i do a for loop in the lore list and check each line?

river oracle
#

why are you using lore and not PDC

young knoll
#

You would need to have the full line to use contains

river oracle
#

you have to loop through the list and use contains

young knoll
#

Otherwise you need to loop each line and use String#contains

#

But yeah just use pdc

river oracle
#

or if you're on older versions NBT

twin venture
#

PDC?

young knoll
#

?pdc

twin venture
#

yes iam on older versions .

river oracle
#

use NBT

young knoll
#

Then use NbtAPI

#

Or just NMS

river oracle
#

if you don't use NBT you will end up shooting yourself in the foot

#

Lore is such a bad way to keep data

twin venture
#

yes i know NBT

river oracle
young knoll
#

You what

glad prawn
#

wat

#

oh

twin venture
river oracle
#

this is valid java code

twin venture
#

here is where i add the lore

river oracle
#

when you add the data? just focus on making the lore look good not on data storage

#

add the raw data no conversions necessary to the NBT

nocturne vine
#

Anyone know what 7x9 is i need help

young knoll
#

Probably like

#

12

remote swallow
#

show me more

nocturne vine
#

What is 7x9

glad prawn
#
    CAT {
        public String makeNoise() { return "MEOW!"; }
    },
    DOG {
        public String makeNoise() { return "WOOF!"; }
    };

    public abstract String makeNoise();
}```
river oracle
twin venture
#

so i can do this right?

compact haven
#

wait what?

#

that's

#

I had no fucking idea doge_kek

#

that's actually crazy

young knoll
#

With the timestamp of when it expires

twin venture
tender shard
young knoll
#

Well with a long you can store the expire time in a simple format

river oracle
tender shard
#

Oh yeah sure

worldly ingot
#

At the end of the day, your enum boils down to just this, which is probably a little more understandable as to why it works

public abstract class MyEnum extends Enum<MyEnum> {

    public static final MyEnum EXAMPLE = new MyEnum() {
        @Override
        public void example() { }
    };

    public abstract void example();

}```
river oracle
#

ahhhhh interesting

worldly ingot
#

Spigot actually uses this syntax for ChatColor

river oracle
#

interesting

#

didn't know

young knoll
#

Could you not have just used a field

worldly ingot
#

Yeah I kind of question that as well. It's not like the enum constant itself isn't already being removed. A { is added anyways

young knoll
#

¯_(ツ)_/¯

twin venture
#

the system is working and it does remove the item after the time usage expired .

#

need to improve it now :p

inner mulch
#

When is it smart to store data in the player NBT data and when / how can i create my own data files (if they are better)?

opal juniper
#

ugh why using nbt when you could use pdc

inner mulch
#

personaldatacontainers are the nbt data

opal juniper
#

yeah, are you using them?

#

Why use NBT directly

inner mulch
#

im using pdc, but i feel like a bad developer and it would be better to create a data base

worldly ingot
#

I mean if you can use a database you probably should. It will end up being more performant at the end of the day

young knoll
#

He’s on an old version

worldly ingot
#

If it's trivially simple data then it's fine

inner mulch
worldly ingot
#

Up to you, really

young knoll
#

Not you

inner mulch
opal juniper
#

yes

worldly ingot
#

Practice mostly. There are different flavours of database. If you want something simple and flatfile you could look into SQLite, but if you want something remote and more robust, MySQL (or MariaDB or Postgres) would be good ones to look into as well

opal juniper
worldly ingot
#

tf is that link?

young knoll
#

📄

opal juniper
#

it’s a staging deployment

#

auto deploys pr’s lol

inner mulch
worldly ingot
#

Definitely a DB

#

You won't be able to access that data unless the player's logged in otherwise

#

What if you want to get all players in a clan?

opal juniper
#

and you can do some cool sql lookups to get all people in clans

worldly ingot
#

Or kick a player for that matter?

opal juniper
#

does offline player not impl PDH

young knoll
#

Not yet

opal juniper
#

huh

inner mulch
#

guys i dont really understand what you are talking about

opal juniper
inner mulch
opal juniper
#

read the link i sent, you will need to learn some basic sql though

twin venture
# inner mulch i want to store the clan a player is in, what would be the most fitting for this...

mysql database you would need :

  • 2 tables

  • a table for clan info itself [ID, NAME, TAG, COLOR, LEADER, KILLS, CLAIMS] this is just an exmaple.

  • a table for players it use the ID for each guild , this is how i created my system UUID , NAME , ID , GUILD_RANK PRIMARY KEY (UUID, ID) , [this is also an example.]

its a bit hard and its goona take allot of time to finish but the result in the end is great .

inner mulch
twin venture
#

i think you mean sqlite?

opal juniper
#

it’s the language used to interact with databases

inner mulch
young knoll
#

Yes

opal juniper
#

it’s very simple

young knoll
#

It’s fairly simple tho

worldly ingot
#

SQL is mostly English keywords

#

Syntax is rather self explanatory, but yes, it is a different language

inner mulch
#

okay, i will look into this

worldly ingot
#

And there are different flavours of SQL too. SQLite's SQL isn't 1:1 with MySQL's SQL

young knoll
#

Because heck you

twin venture
#

hi am i doing anything wrong ?
when i buy the item it should set it to the current time of buying :
i bought it now but it set it to 1:24 , now its 1:45 ..

worldly ingot
#

LGTM. Could just be setting the wrong value on your item

wet sparrow
#

Set a format

twin venture
#

each item have diffrent data :

wet sparrow
#

Like this dd/mm/yyyy

#

Or hh/mm/ss

#

Date format

#

To see 01:33 s

#

Or 01:10:33

twin venture
#

yes i see

#

oky

#

let me test it

#

i only need to put hourly items , you know i won't be using a day or a week or smth .

#

the value is 1 for the hours

#

but for some reason its give 2 hours , 53 minute this .-.

quaint mantle
#

How should I go about having a mob never despawn?

young knoll
#

Set it to be persistent

quaint mantle
#

will try

warm mica
twin venture
#

trying to work harder .. ❤️ thx for asking

warm mica
#

And you likely should use OffsetDateTime instead of LocalDateTime as winter/summer time could mess up your logic

twin venture
#

the problem now :
when ever i buy an item from the shop , it set the time to 3 hours , 4 minutes , 20 seconds ..

#

all items have 1 hour only :

wet sparrow
#

Get te par of hour

#

Part

#

Or add only 59 min

#

No 1 hour

twin venture
#

well some items can have 6 hours in the shop

#

only hours ..

wet sparrow
#

And get de part in minutes

#

Ok

#

You can use getMinutesPart

#

Or partMinunes

twin venture
#

oky thanks ..

twin venture
wet sparrow
#

Don't work?

lost matrix
#

Dont populate within the constructor. The approach in this tutorial was meant for very dynamic guys that might change every
time a player opens it. If you want to define GUIs that are only initialized once because they are static then you need to externally decorate them.

My actual system deviates quite a bit from the tutorial. I have an implementation for GUIs that are static and one for GUIs that are dynamic.

twin venture
#

i set it only 1 hour in the config file

#

but its set it to 3 hours ..

lost matrix
#

And show the code where you add the expiration string in the lore

twin venture
#

ok i figured out why its bugging .. it should set the time of buying [when player accutlly buy it , and not in the Item Constructor

#

kind of got it xd

twin venture
wet sparrow
#

works now?

#

@twin venture

twin venture
#

i will fix it tomrrow iam sleepy now its very late 3:18 am :p

inner mulch
twin venture
echo basalt
#

1:19am here

young knoll
#

Wut

twin venture
#

hi i have a question , when this event is triggered?
PrepareItemEnchantEvent

young knoll
#

But it’s 8:29 here

young knoll
#

Not sure if it requires that enchantment options actually appear

echo basalt
#

something tells me my sleepy ass can't read

twin venture
#

well iam trying to do is :
if player enchant the item from the itemframe [bought it ] he can drop it or it will drop from him when he die

i only need to check if item is enchanted .

#

is there a event for that?

young knoll
#

Either that or you time traveled 10 minutes

#

Which is fun

twin venture
#

ItemSuccedEnchantEvent xd?

young knoll
#

ItemEnchantEvent iirc

echo basalt
#

4500 lines of code, 11 interfaces

#

can do better

twin venture
#

welp i don't have that

#

is there another way?

young knoll
#

EnchantItemEvent

twin venture
#

yes that's the correct one , i just found it from google :p

#

should i do remove key?

#

if i want to remove a nbt tag?

#

USING this one ..

echo basalt
#

Hmm I wonder how I can make an extensible "custom data" system that still has full database support

#

I'd make a Map<String, Object> but that is funky to serialize when it comes to sql and mongo

#

Maybe an interface but then each one needs to have serialization logic for literally every single type of database that exists

#

I think my best approach is to probably just fire events and let plugins handle its own loading logic

wet sparrow
#

lol

young knoll
#

Hmm

#

My expert analysis concludes that cow

quaint mantle
#

Can you call World#save async?

wet breach
echo basalt
#

Yeah but what if the data isn't serializable?

buoyant viper
#

personally i think data can always be serialized if u try hard enough

echo basalt
#

Well

#

good luck serializing a socket

buoyant viper
#

oh no i didnt say im going to try it..

wet breach
wet breach
#

they are a transport layer

#

but you can however serialize a socket object

echo basalt
#

A java socket object

wet breach
#

Just turn the object into a byte

#

and then store those bytes into the blob

#

you could then reverse it

echo basalt
#

Ehh not a fan of that

#

Because I can't do queries on that object

wet breach
#

why not?

echo basalt
#

Let's say I want to add 2 fields

#

Level and points

#

I can just store that in a collection and serialize that into a blob

wet breach
#

what does that have to do with socket objects?

echo basalt
#

But it won't play nice if I want to get the players with the most points

echo basalt
wet breach
#

no because ideally you wouldn't do that at all

echo basalt
#

Yeha that's what I'm thinking

wet breach
#

since there is typically nothing in the object you don't already know

lost matrix
echo basalt
#

Yeah but I'm not limited to mongodb

lost matrix
#

Drawback: It heavily relies on reflections

echo basalt
#

I do that at work too

slender elbow
#

serialize a socket... what kind of fever dream is this

wet breach
echo basalt
#

I'm working on a sharded skyblock system and I like the idea of having plugins being able to append their own data to islands but it'll be a pain to actually do the IO for the 19 database types I support

lost matrix
#

Well if you want to support different databases then you need to first serialize
your data into a common format (json for example) and then write an adapter
from your common format to the different data stores:

  • json -> json [FlatFile]
  • json -> bson [MongoDB]
  • json -> SQL Model [SQL]
echo basalt
#

Right now my database stuff is just an interface with the methods I want and each driver does its own query logic

wet breach
#

and you can query file types and names as well to make your queries easier

#

just to give you an idea how versatile a blob really can be lmao

echo basalt
#

But I see some idiot trying to hook a shitty little plugin and trying to append a whole bukkit player

wet breach
#

lol

#

thats part of fail safe logic

echo basalt
#

And that just won't play nicely

bitter rune
#

I am saving a number as a double by .01, and when increasing said number at times it's pretty ugly (0.023434) type ugly. Is there anyway with a double to round to the nearest hundredth?

echo basalt
#

So my idea is to just write events for everything and let plugins do their own logic

lost matrix
#

Yeah i feel like you will end up with Entity, Player, World etc fields in objects.
In this case recursive reflection serializers just break.

echo basalt
#

That way they can adapt their database drivers to have the most optimized queries

echo basalt
#

Instead of some fancy algorithm written by an idiot (me)

#

And I don't get the blame when things break

#

who am I kidding I'll still get blamed

#

Maybe I could make some sort of transient map for placeholders

#

But that's about it

lost matrix
young knoll
#

So you’re telling me I can’t stick the entire server into your database?

echo basalt
#

Nope

young knoll
#

;(

river oracle
#

just tried to serialize CraftServer into your database any reason why its failing???

echo basalt
#

All fun and games until that one degen tries to serialize the whole world and push an 18tb blob to an sqlite database

wet breach
#

I will just give you both ways

lost matrix
wet breach
#
double x = 1.234;
double y = Math.round(x * 1000.0) / 1000.0;

BigDecimal a = new BigDecimal("1.234");
BigDecimal b = a.setScale(2, RoundingMode.DOWN); // => BigDecimal("1.23")
echo basalt
#

So yeah I might just avoid that problem entirely

wet breach
#

oh 7smile7 got the first way nice

bitter rune
#

Sorry using Google as well.

river oracle
#

granted I use this database called Nitrite so I didn't have to fuck with SQLite

#

no MySQL support for my system yet though

echo basalt
#

I got all forms of sql and mongo in atm

#

I was gonna do an indexed flat file but it was getting ugly

young knoll
#

Doesn’t sql have a json type

#

Or is that only some flavours of sql

river oracle
#

I don't have to use my database much though. Since I don't usually work with Data heavy plugins I can usually store in PDC or sometihng with minimal issues

river oracle
wet breach
#

for binary, it would be something like csv

echo basalt
#

I still need to add prometheus support to my metrics abstraction

inner mulch
#

Is there a way to remain the name tag, even tho the player is invisible?

echo basalt
#

Just got influx atm

bitter rune
#

In 2 weeks I'm going to start messing with NoSQL I understand the very basics of databases but I need to expand my knowledge

wet breach
#

use an armor stand and what not or if on new version you could try out the display entities for it

inner mulch
#

ok

echo basalt
#

Are there any other low-latency caching databases other than redis?

lost matrix
echo basalt
#

Dragonfly hmm

bitter rune
#

It's not for Minecraft although I'm using Minecraft as a learning playground.

keen zinc
#

Can anyone help

echo basalt
#

Bruh

lost matrix
undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

keen zinc
#

I created a smp like hypixel but I want that my lifesteal npc have the only access to the lifesteal plugin

#

Plss

#

Someone suggest me this server

young knoll
#

I don’t… think they are writing any code?

keen zinc
#

Which code

echo basalt
#

Scylladb huh

lost matrix
echo basalt
#

Grr

keen zinc
#

Didn't understand??

compact haven
#

what in the world

echo basalt
#

Someone explain

wet breach
lost matrix
echo basalt
#

Yeah I might just hook into all those

compact haven
echo basalt
#

I've had that one mf asking for amazon s3 support

lost matrix
#

lol

bitter rune
#

I used to like denizen plugin that works with citizen, it was a good stepping stone to understanding how to make my own plugin

lost matrix
echo basalt
wet breach
#

well aws does have their own caching mechanisms too

lost matrix
echo basalt
#

Minecrypto

wet breach
#

but I generally don't incorporate such things since they cost money to use lol

lost matrix
#

Ah lol

echo basalt
#

I'm on my journey to support more database types than luckperms

#

Might even write a web app where you fill out a form and it provides the perfect config files lmao

#

I'm bored :/

young knoll
#

Can I store it on GameCube memory packs

echo basalt
#

Uh

#

Good luck

young knoll
#

If you can’t provide those storage options I don’t want it

echo basalt
#

Harder drive sounds like my mental state atm

young knoll
#

He stores data on Tetris

#

And Covid tests

lost matrix
#

I wanna write my own obscure database in Ruby, make it popular with your
users and create a horrible serialization workflow.

echo basalt
#

Bet

wet breach
echo basalt
#

But yeah I'm thinking of a webapp that does all the logic locally

#

Like a static page with a bunch of js

lost matrix
wet breach
#

I suppose 1,000 of them for 8GB would suffice for a small DB

#

but the problem is going to be how you how you hook up 1k or more of them to use them

echo basalt
#

I do want to fix my sleep schedule but this sounds fun

wet breach
lost matrix
wet breach
lost matrix
wet breach
#

would end up needing more cards because of the extra data needing to be saved lol

echo basalt
#

I made a presentation of a product that didn't exist and claimed the datacenter I had it on had a network outage

#

91.5%

wet breach
young knoll
#

4 hours of sleep, 3 hours of awake, 1 hour of N A C H O?

echo basalt
#

And we were aware of this for like 3 years

#

Anyways I did some poor choices and got a massive project and simply didn't manage my time well

wet breach
#

for 3 years you didn't manage your time?

echo basalt
#

It was like a webapp that did spatial audio based of your position in-game

wet breach
#

alright continue lol

echo basalt
#

in december of the final year

#

But we had 3 years to plan and think

#

anyways I had no fucking idea what to do

#

and just thought of this in like february

#

hired my brother to help me finish it in like may

#

Dude spent a month sitting on his ass and on the last week he tells me he had nothing done

#

So I was like "fuck it, I'll present next year"

#

Went there just for shits n giggles and my hardcode network teacher just went to me and said

echo basalt
#

"go home, sleep, wake up and drink like 5 red bulls"

#

and basically told me to make a "theorical presentation" which means I had no product but the research alone was worth a lot

#

So I made this entire powerpoint in like 7 hours

#

Got it looked at by the teacher like 30 minutes before, did last-minute fixes and presented

#

Had like the top 3 grade or something

echo basalt
#

left there hella happy, went to domino's, got home and passed out at like 3pm

wet breach
#

but yeah spatial audio stuff exists though as product related things especially with games

echo basalt
#

woke up at 6am the following day

echo basalt
#

hadn't heard of it back then

#

but the idea was that it was a plugin and a web app

#

And all the spatial audio logic happened with the WebAudio API

#

lot of sockets, wrote a whole protocol

#

It was a spring server talking to all the minecraft instances and doing all the audio routing for the web clients

bitter rune
echo basalt
#

Also all the images I had of the web app were made in photoshop

wet breach
#

still, kind of funny you did a presentation on something you believed to not exist. Either way still cool you got a good grade without presenting a physical thing

echo basalt
#

it was a really beautiful presentation

#

I talked about multithreading, security, firewalls n shit

#

Even gave pointers that I wanted to do internal metrics and pulled the work grafana dashboard

#

and they just bought it

wet breach
#

lol

#

when you spend more time on the presentation to fool everyone then the actual thing 😛

bitter rune
#

Speaking of, irl I'm not someone who is good with people, somehow communications was my gpa, on top of that the last presentation I scored 5 points above for creativity

echo basalt
#

Nah I did put in the work

wet breach
#

good thing this wasn't some sales pitch

echo basalt
#

7 hours on the presentation and like 12 trying to do the project

#

people worked like 6 months on their projects and got shit grades

#

but there were also a lot of shit ideas

#

there was this dude that made an AI with a human-sounding name so it tripped on most conversations

wet breach
#

what was the theme for the finals?

echo basalt
#

You picked your own project

#

programming-related

echo basalt
wet breach
#

lol

echo basalt
#

reminds me of this gif

#

And it had like 3 commands

#

worst part is that it was just a fork of a github project with like 2 subcommands

#

One of them was to open spotify, which had the .exe path hardcoded

#

And I don't remember the other one which means it was useless

sharp cargo
#

Hi guys, sorry for the inconvenience. I'm making a Plugins in Spigot 1.20.1. But it seems to me that a lot of things have changed. Is it possible to get help? (Sorry, I'm a beginner..)

package fr.mrezor.lcdm.event;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

@SuppressWarnings("deprecation")
public class EventMod implements Listener{
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        if (event.getAction().name().contains("RIGHT_CLICK_AIR")) {
            PlayerInventory playerInventory = event.getPlayer().getInventory();
            ItemStack itemInHand = playerInventory.getItemInMainHand();

            if (itemInHand != null && itemInHand.isSimilar(new ItemStack(Material.DIAMOND_AXE))) {
                String itemName = itemInHand.getItemMeta().getDisplayName();
                if (itemName.equals("§4Reload")) {
                    event.getPlayer().sendMessage("Vous avez cliqué avec un item nommé '§4Reload'");
                } else {
                    event.getPlayer().sendMessage("Vous avez cliqué avec une hache en diamant !");
                }
            }
        }
    }
}
echo basalt
#

Yeah you don't compare items with their name

#

And isSimilar does meta checks, only skips amount checks

#

ItemStack#getType and

#

?pdc

echo basalt
#

Are your homies

young knoll
#

Comparing the event action with a string is… interesting

echo basalt
#

I'd use it to see if it's a RIGHT_CLICK because it can either be block or air

#

but yikes

young knoll
#

I just use an ||

#

It’s 2 conditions I’m sure the cpu will live

remote swallow
#

go make an abstract class that has util methods for events

#

if(isRight(event))

young knoll
#

Or just

#

PR it into the enum/event

remote swallow
#

no

lost matrix
#

Hm item in hand cant be null iirc

echo basalt
#

Depends on the server version

#

I still do nullability checks

#

Because ancient versions sometimes give issues

#

Better safe than sorry

sharp cargo
#
package fr.mrezor.lcdm.event;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;

@SuppressWarnings("deprecation")
public class EventMod implements Listener{
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        if (event.getAction() == Action.RIGHT_CLICK_AIR) {
            PlayerInventory playerInventory = event.getPlayer().getInventory();
            ItemStack itemInHand = playerInventory.getItemInMainHand();

            if (itemInHand.getType() == Material.DIAMOND_AXE) {
                String itemName = itemInHand.getItemMeta().getDisplayName();
                if (itemName.equals("§4Reload")) {
                    event.getPlayer().sendMessage("Vous avez cliqué avec un item nommé '§4Reload'");
                } else {
                    event.getPlayer().sendMessage("Vous avez cliqué avec une hache en diamant !");
                }
            }
        }
    }
}
young knoll
#

You can also just use event.getItem to get the item involved in the event

lost matrix
#

That would be the proper way actually. And check which hand the event was fired for.

young knoll
#

What the heck is ItemType

lost matrix
#

I was just looking at the javadocs

livid dove
#

Very closely aligned approaches I'd imagine

lost matrix
#

What do you mean by custom inventory?

livid dove
#

E.g a custom barrel that can age brews.

A custom inventory that can make custom items (that works with in panel itemstack buttons) etcs

#

E.g: not just a menu, but an inventory with additional functionality depending on what's done in it

sharp cargo
# sharp cargo ```JAVA package fr.mrezor.lcdm.event; import org.bukkit.Material; import org.bu...

Its giving me this error with the code

Caused by: java.lang.NoSuchMethodError: 'org.bukkit.inventory.ItemType org.bukkit.inventory.ItemStack.getType()'
        at fr.mrezor.lcdm.event.EventMod.onPlayerInteract(EventMod.java:19) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
        ... 23 more
lost matrix
#

That... sounds like a GUI to me 🙂

livid dove
#

I mean there is added subtlety.

Persistsncd for one

drowsy helm
#

the gui is just the fascia for the system

young knoll
livid dove
#

I mean that's fair to an extent , but utilising the ability to pin down what inventory an event is dealing with using a simnilar approach to the modern gui approach could be a shout.

lost matrix
#

Inventories are merely a way of letting the user interact with, and modify data.
You can create a Barrel, store some data like brewing content and different settings
inside its PDC and simply use an inventory to let the user modify this data by placing
items in it or changing the brewing temperature etc.

remote swallow
young knoll
#

Yeah I guess that is from the new PR

sharp cargo
lost matrix
#

Inventories or GUIs itself should usually not store anything. They should be stateless
in most cases and just provide functionality in a UI

young knoll
#

But the heck are they doing with that build

livid dove
lost matrix
#

Hm. Im currently updating my plugins and afterwards i might write something in the forum again.
Not sure what topic since ive done mostly machine learning and image processing in the last months...

young knoll
#

How to ASM

#

Kek

river oracle
#

Keep that away from spigot peoples

lost matrix
#

How to break everything beyond comprehension in the hackiest way possible (ASM)

young knoll
#

But it’s fun

lost matrix
#

Yeah especially if you do meta programming

livid dove
#

I mean tbh considering ur thread style, maybe a guide on using async properly?

lost matrix
#

I got "threading for beginners" but halfway through i realized that this is a huge topic
so it kind of cuts out at the end

livid dove
#

Ooor one that I'd love to collab with a few authors on as a dream pet project:

OOP Design Patterns: Taught through examples of their utilisation in spigot plugins.

sharp cargo
young knoll
#

Mhm

livid dove
young knoll
#

Where did you get your spigot api jar

river oracle
lost matrix
#

To be honest CF are very nice. I mostly use them when doing multithreading.

river oracle
#

I've never used Thread from Java

#

I only sue CF

young knoll
#

Oh fuck don’t sue

lost matrix
#

I sometimes use executor services

river oracle
lost matrix
#

But then again, you can just pass them to a CF and have a nice reactive pattern instead

#

Fk it has been so long. What did i forget?

#

Ah just read remapped and then it came. Need to run bt with the remapped flag. Woops

river oracle
#

Reminds me bt gui coming soon woohoo

#

Just gotta finish my part:( I'm a slave

lost matrix
#

What gui framework?

young knoll
#

Swing

#

/shrug It’s cross platform and doesn’t make the jar huge

lost matrix
#

Has been a while until i realized you can stylize swing components with css

sharp cargo
young knoll
#

?bt

undone axleBOT
young knoll
#

Or since you just need the api you can use the maven/gradle dependency

river oracle
#

Hope it wasn't malware fingers crossed

lost matrix
#

"ItemType"

#

Idk man

river oracle
#

You must not be up to date on the registry pr

#

It's in an experimental branch of spigot atm

young knoll
#

What site is distributing that

lost matrix
#

Nope im not. Pretty much 4 months behind

river oracle
young knoll
#

Yeah but why tf are they

lost matrix
#

Anything cool coming from 1.20?

young knoll
#

Sigh it’s best to not question it

young knoll
river oracle
#

I'm biased but InventoryView#setTitle already merged uwu

#

Sorry I use setTitle way too much not to be happy about it lol

young knoll
#

Lol

#

Not much new in 1.20 yet

lost matrix
#

Interesting. Does it send the inventory + items to the player again?
Or is renaming an open inventory now possible.

river oracle
drowsy helm
#

you could always do it with packets

river oracle
lost matrix
river oracle
#

Tried and tested :P

young knoll
#

Not anymore I guess

lost matrix
#

Alright then. Nice 😄

young knoll
#

This changelog site is great

#

Phoenix is best

river oracle
lost matrix
#

Woo, dont need to fix my plugins

river oracle
#

Yay

young knoll
#

Api wise 1.20 didn’t change much

#

Just signs

#

Actually NMS wise not much changed either

river oracle
#

I love when NMS doesn't change

young knoll
#

Mappings certainly help with that

lost matrix
#

The change to mojang mappings was a good idea

young knoll
#

Shoutout to Mojang for actually making them usable license wise

lost matrix
#

Interesting

young knoll
#

?

lost matrix
#

Just some things ive discovered in Player

#

You can now open a ton of GUIs via the api

young knoll
#

You’ve been able to do workbench for a long long time

#

Don’t remember for the others

timber crescent
#

can i hide blocks from certain players? and other people can just go right thru it?

slate mortar
#

i swear i wanna end my life

slender elbow
#

I mean same but for the wrong reasons

slate mortar
#

i somehow dont trust fabric

#

it says it takes 3ms for this process

#

i somehow doubt that

#

and i just realized i'm in help-dev channel

#

now i wanna end my life even more smh

slender elbow
#

can we hold hands while at it

slate mortar
#

yes, please

buoyant viper
#

can i join @slender elbow @slate mortar

slate mortar
#

join what

#

oh death?

sterile breach
slate mortar
#

sure

sterile breach
#

Why ?

lost matrix
sterile breach
#

So i décorate on open?

buoyant viper
sterile breach
lost matrix
#

Just do it and if it doesnt cause any problems then you should be fine.
Its only a problem if you want to continue with the abstraction pattern.

buoyant viper
#

?learnjava! kekwhyper

undone axleBOT
sterile breach
rare kraken
#

I'm updating some old plugins from pre 1.19 to some modern versions.

The main feature I'm updating is some custom command stuff, is there any good guides on what has changed with Brigadier. In the past I was able to get the ArgumentItemStack directly but now it seems like it needs a CommandBuiltContext?

lost matrix
sterile breach
lost matrix
#

Just dont decorate inside the abstract class' constructor

#

And if you call it in your child class then make it final

sterile breach
lost matrix
#

So you dont extend it and wonder why it breaks later on.

sterile breach
#

He never breaks.

Menu (abstract)

Testmenu extend Menu

In the constructor of testmenu.

lost matrix
#

But calling it in the constructor is still dirty in my opinion.
Its an implicit implementation detail. You have to remember to
call it in every childs constructor.

lost matrix
sterile breach
lost matrix
# sterile breach What do you mean on another abstraction level?

Menu
-> PaginatedMenu
-> -> PaginatedBookMenu
-> -> -> BibleMenu / CookbookMenu / TravelersGuideMenu

If you call decorate in the constructor of PaginatedBookMenu
but CookbookMenu relies on the decoration being called after
the constructor, then you are fked.

sterile breach
lost matrix
#

But more importantly: Its an implicit implementation detail
If you have to "remember to implement it" then thats a bad design.

sterile breach
lost matrix
#

If the GUI doesnt change then you should not decorate it every time a player opens it.

sterile breach
#

No, he change

sterile breach
bitter rune
#

I'm using trouble creating a bukkit runnable runtasklater it asks for a plugin I tried putting the class name and plugin name here and it doesn't work

daring schooner
#

?nms

lost matrix
daring schooner
#

Guys, is there a nice way to listen to packets in mojang mappings, although i know i should use protocol lib stuff but i would like to learn it without it, where i should start when trying to listen to packets

sterile breach
sage patio
#

is there any events for health generation and hunger?

daring schooner
#

EntityRegainHealthEvent and FoodLevelChangeEvent are they way to go

sage patio
#

thank you

lost matrix
#

Its not easy to find out how to do this on your own. But you can grab code from someone.

daring schooner
lost matrix
#

You need to add your handler before the "packet_handler" component in the current netty pipeline

daring schooner
#

Hm okay, that makes sense

#

I saw i need to create an reflection to be able to read the packets

lost matrix
#

Only if you dont use NMS

daring schooner
#

Its a pretty extensive topic damn

daring schooner
sage patio
#

the default walk & fly speed is 1?

lost matrix
#

You will get an Object if you register your own handler before the "packet_handler"
If you have nms on your classpath then you will actually have the nms packet at your disposal.
If not then you just have an Object. In this case you need to use reflections because you
dont know what the packet looks like

chilly hearth
#

e

daring schooner
#

That's exciting imma go write some code

#

Thanks for the help @lost matrix

alpine urchin
daring schooner
alpine urchin
#

good good

#

you could look into how these projects do it

daring schooner
#

Thought that was a wise ideia to do.

alpine urchin
#

protocollib, viaversion are open source

daring schooner
#

but thanks for the tip

alpine urchin
#

mine also does it

#

xd

#

so yeah

#

but still knowing netty basics works

#

knowing how to make a handler

daring schooner
alpine urchin
#

different kinds

#

order of the pipeline

#

so you know why you want to be infront of packet_handler

daring schooner
#

Imma jump and trying to develop something using netty to get the feel

alpine urchin
#

thing is

#

mine and viaversion’s project dont want the nms object

daring schooner
#

I got really interested into this networking side of minecraft servers

alpine urchin
#

we want the buffer

#

so we need to be placed differently in the pipeline

#

we aren’t next to “packet_handler”

#

but the reflection code to inject to access the pipeline you can take from us

daring schooner
#

Mainly because of how minecraft anti-cheat works

daring schooner
alpine urchin
#

there’s anticheat communities

daring schooner
#

Just got into your git repo

alpine urchin
#

although sometimes can be toxic

daring schooner
alpine urchin
#

my general advice for anticheat development is study the client

daring schooner
#

This one is pretty chill

alpine urchin
#

its reallt digging into mc source

#

seeing how client behavior works

#

making checks for it

#

but writing injection code for packets on your own itself won’t help you anticheat wise

daring schooner
#

Oh, i was diving into a decompiled version of minecraft made by forge for creating a custom client

alpine urchin
#

but if you desire to do that, go ahead

daring schooner
#

Idk if its legal but, old times, old crimes

alpine urchin
#

if you don’t distribute your client jar then its legal

daring schooner
alpine urchin
#

that would be leaking minecraft

daring schooner
daring schooner
alpine urchin
daring schooner
#

oof

#

Thanks for the Help and the Repo

alpine urchin
#

you can modify the client on your computer

#

for yourself

#

following the EULA

#

it asks us to just not make grief mods(cheats) :)

#

if you have any basic netty questions i can answer

#

in netty handlers are kind of like listeners

#

event listeners

daring schooner
#

Sure, imma hit you with some if i can't figure it out in my own

alpine urchin
#

there’s multiple cause they transform the data from one format to another

#

some handlers decompress

#

some decrypt

daring schooner
alpine urchin
#

some convert from buffer to your nms object

#

so therefore its important to know where to place yours

#

you be after the handler that converts to nms

#

but then pipeline has an interesting order

#

incoming packets are fired from left to right

daring schooner
#

My main goal now, is to listen to when a player interact with a client-side entity.

#

Basic NPC stuff

alpine urchin
#

outgoing packets from right to left

daring schooner
#

Just to undestand how to intercept it

alpine urchin
#

why not use a packet api

#

such as protocollib or packetevents xd

daring schooner
alpine urchin
#

since its your main goal

daring schooner
#

But i want to develop it using no lib to learn how it works

#

Like an scavenge thing

alpine urchin
#

okk

daring schooner
#

idk lol

alpine urchin
#

the pipeline stuff makes sense?

daring schooner
#

Just out of curiosity and passion

daring schooner
alpine urchin
daring schooner
#

now i need to take the logic to code

alpine urchin
#

most of these should make sense

#

by the names

#

left to right is incoming

#

what do you expect decrypt to do

#

to the buffer

#

the bytes

daring schooner
#

I couldn't indentify from what direction was what on my own

#

but your explanation of it makes sense

alpine urchin
#

splitter splits them up sometimes packets are chunked together when sent

#

decoder converts from buffer to nms object

daring schooner
#

Not the NMS part tho

daring schooner
#

i'll try to get something running here

#

Thanks for the help dude

dim adder
#

Hello, does anybody know how I can check in the PlayerInteractEvent if the interacted item is a item in the players inventory?

daring schooner
#

I don't undestand your question. You mean like if the player interact with a diamond block if checks if the player has a diamond in the inventory or a diamond block?

#

Cause if this is your question you can use a code like this


    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Block interactedBlock = event.getClickedBlock();

        if(interactedBlock == null) return;

        Material interactedBlockType = event.getMaterial();

        Inventory inventory = player.getInventory();

        if(inventory.contains(interactedBlockType)) {
            player.sendMessage("You have interacted with an item that's in your inventory!");
        } else {
            player.sendMessage("The item you interacted with is not in your inventory.");
        }
    }


#

I didn't run the code to test it

#

idk if it works 😂

#

Oh, it wont check the diamond tho only the block

chilly hearth
#

?learnjava!

undone axleBOT
sage patio
dim adder
daring schooner
# dim adder so if you have a lever in your inventory and your right-click it, function a sho...

  @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        // Get Player and the world block the player interacted
        Player player = event.getPlayer();
        Block interactedBlock = event.getClickedBlock();
            
        // Guard Clause to check if block is null
        if(interactedBlock == null) return;

        
        // Get Type of the block and the player inventory
        Material interactedBlockType = event.getMaterial();
        Inventory inventory = player.getInventory();

        
        //Checks if the inventory contains any stack with the interacted block material
        if(inventory.contains(interactedBlockType)) {
            // Run if the inventory got any similar block
            player.sendMessage("You have interacted with an item that's in your inventory!");
        } else {
            // Run if the inventory doesn't got any similar block
            player.sendMessage("The item you interacted with is not in your inventory.");
        }
    }

#

I commented the code out

daring schooner
#

You might wanna add some Item Specific Logic to complement the code

#

I also recommend running this code to understand what it does before start coding with it

daring schooner
#

I think this is a workaround

#

can't think of anything else rn

#

imma do some research

lost matrix
sage patio
#

yea i figured out there is a gamerule called NATURAL_REGENERATION

#

i changed that to false and created a runnable to remove half a hunger each minute

daring schooner
sage patio
#

they have to call medic or go to hospital to regain their health

daring schooner
#

Oh, makes sense lol

lost matrix
sage patio
#

no

lost matrix
sage patio
#

what d u think about this? D:

daring schooner
#

lmaoooo, thats so good

sage patio
# lost matrix

i'm disabling that with EntityRegainHealthEvent too* sorry

sage patio
daring schooner
#

What a nice ideia

#

You did you customize the UI?, using an Rest API or are those placeholders value?

sage patio
#

i did that with a text shader inside a resourcepack

#

so the text shader modifies the position of my actionbar

#

to top-left of every screen in any resolution

lost matrix
#

Making multiple lines is the tricky part

daring schooner
#

That's interesting

sage patio
#

well i move each line to left by their previus line

#

its complicated

daring schooner
#

Doesn't it change resolution wise?

sage patio
#

i don't understand