#help-development

1 messages · Page 608 of 1

vast ledge
#

Welcome to the world of developers

young knoll
#

Make sure your java file is using the right encoding

vast ledge
#

yep

young knoll
#

UTF-8 should work

#

Also I assure you velocity works fine on players

#

Try utf 16

#

Don’t see why it wouldn’t

#

Surly would have been reported by now

#

Make sure you are on the latest build, make sure you aren’t messing with it in the velocity event

#

Make sure another plugin isn’t messing with the velocity event

#

Weird

#

utf8 should be working fine

#

You could try using the escaped Unicode version of the character

#

Which is \uXXXX

#

Must not have actually been on 8 even though it said it was

#

¯_(ツ)_/¯

wet breach
#

because in code | actually means something, where as in config its just a string character

#

so if you want to use it, you need to ensure it is interpreted as a string character

vast ledge
#

It kinda works?

#

Is there a way to go down a line

#

or is that a futile atempt

young knoll
#

I think text displays can have multiple lines

#

And also offsets

vast ledge
#

Another question

#

is there a translator

#

for like

#

1000

#

to turn into 1k

#

or do i have to manually

echo basalt
#

Most people just make their own

#

Or you can steal it from any prison plugin

vast ledge
#

Ok

#

ty 😄

#

Is there a way i can split a number

echo basalt
#

You mean division?

vast ledge
#

already got it

#

turneed it into string

#

then to chararray

wet breach
#

but there is Java API for formatting numbers though

#

think even Apache and Guava have some stuff too

#

which are stuff shaded into spigot

vast ledge
#

Thats what im doin

#

is there a better way?

echo basalt
#

probably a map

sage patio
#

when you code a plugin in Kotlin, the compiled plugin .jar is in Java right?

echo basalt
vast ledge
#

Ayy

#

thanks

wet breach
#

as I said, there is Java API's for such things 😛

#

just have to actually look

vast ledge
#

my 2 braincells at 2 am cant handle google anymore

sage patio
# wet breach yes

so why that plugin i coded in Kotlin spams a ton of Kotlin class not found ... error

#

it was the first & last time i coded a plugin in Kotlin

wet breach
#

probably because you used the wrong compiler

dull schooner
#

hey, is there a way to make a player use an item?

prime epoch
#

is there a getBlockAt for players (client side only)?

wet breach
#

not sure what you mean client side only

prime epoch
#

I made updates with player.sendBlockChange

#

actually nvm i thought of a solution

#

nvm nvm i havent. wait so is there a way to get the blocks that was sent to the client. Right now i basically have two pillars for a claim wand that show each corner and im trying to make it so they can select another block and delete the other pillar. yk?

young knoll
#

No

#

You have to keep track yourself

wet breach
#

you would need to keep track of what you sent to do such things instead of tossing it away

prime epoch
#

alright thanks

split gull
#

is there a way to smoothly teleport a display entity?

#

or smoothly move it towards a location

young knoll
#

Use the interpolation feature and translation

#

Tho idk how far it can go using that

split gull
#

from what i remember these dont do it smoothly

young knoll
#

Any transformation can be interpolated

#

And interpolation is client side

split gull
#

wdym interpolation

young knoll
#

It’s a feature of display entities

#

That lets them smoothly transition from their old transformation to a new one

split gull
#

kk

wild basin
#

I have a question

dull schooner
wild basin
#

Why do the config automaticly remove spaces? this to

#Configuration for the Ghost plugin
max_vl:
fly: 40
speed: 5
reach: 3

messages:
fly_alert: "§d§lGhost §8-> §b§l{player} §7failed Fly detection. Type: §dY §7VL: §d{violations} §7MAX-VL: §d{max_vl}"
speed_alert: "§d§lGhost §8-> &b§l{player} §7failed Speed detection. Type: §dXZ §7VL: §d{violations} §7MAX-VL: §d{max_vl}"
reach_alert: "§d§lGhost §8-> §b§l{player} §7failed Reach detection. VL: §d{violations} §7MAX-VL: §d{max_vl}"

commands:
fly: "/ghostkick {player}"
speed: "/ghostkick {player}"
reach: "/ghostkick {player}"

this:

#Configuration for the Ghost plugin
max_vl:
fly: 40
speed: 5
reach: 3
messages:
fly_alert: "§d§lGhost §8-> §b§l{player} §7failed Fly detection. Type: §dY §7VL: §d{violations} §7MAX-VL: §d{max_vl}"
speed_alert: "§d§lGhost §8-> &b§l{player} §7failed Speed detection. Type: §dXZ §7VL: §d{violations} §7MAX-VL: §d{max_vl}"
reach_alert: "§d§lGhost §8-> §b§l{player} §7failed Reach detection. VL: §d{violations} §7MAX-VL: §d{max_vl}"
commands:
fly: "/ghostkick {player}"
speed: "/ghostkick {player}"
reach: "/ghostkick {player}"

young knoll
#

Because spigot doesn’t add any spaces when it saves a config from memory

kind hatch
#

It shouldn't be doing that anymore.
Comments and spaces are now preserved post 1.18.1

sullen marlin
#

I dont think spaces are

#

comments are though

young knoll
#

Would be nice if we could somehow add spaces

#

But idk if SnakeYaml supports that

eternal oxide
#

possibly try adding a \n to a comment

#

it should be retained and display as an empty line

blazing flare
#

If I have a 'craft x planks' as a quest, how can I keep track of that? The CraftItemEvent gives you a recipe and the inventory. You can use that to calculate the maximum amount that can be crafted, until you factor in the players inventory. Then when you're dealing with items with additional metadata, you'd have to compare all of that too. Is there a simpler way to do that?

#

Essentially it's a "can item A be added to item B's stack?"

wild basin
#

How can I make a reload command that make up to date the config.yml ?

young knoll
#

plugin.reloadConfig is the easiest way

#

Assuming you are only using the default config and are reading from the object each time

wild basin
young knoll
#

?notworking

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

wild basin
#

When I save a setting in config.yml and I do the command it does not work.

fluid river
#

?notworking x2

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

carmine nacelle
#

Im getting an extremely weird concurrent modifiction exception on this for loop. The error is on the line that says "for"

            for(String beeName: storedBeeNames) {
                beeManager.spawnBee(customHive, beeName);
            }

SpawnBee method:

    public CustomBee spawnBee(CustomHive customHive, String beeName) {
        Random babyRandom = new Random();
        int roll = babyRandom.nextInt(0, 100);

        boolean isBaby = roll > 50;

        CustomBee customBee = new CustomBee(customHive.getHiveLocation().clone().add(0.5, 1, 0.5), ColorUtil.color(beeName), isBaby);

        Bukkit.broadcastMessage(ColorUtil.color(beeName));

        customHive.getBeeUUIDs().add(customBee.getUniqueId());
        customHive.getBeeNames().add(customBee.getCustomName());

        customBee.setCannotEnterHiveTicks(0);

        cadiaBees.beeManager.setBeeToHiveMap(customHive, customBee.getUniqueId());
        return customBee;
    }

I dont see how anything could possibly be modified while looping

wet breach
#

well you are adding to something

#

we don't know from that what your classes are doing

#

like what is CustomHive

#

we don't know what is going on there

#

what is storedBeeNames

#

?paste

undone axleBOT
wet breach
#

also, it helps to show the full stack trace too

#

not just tell us what kind of error

#

since most don't even know how to read the stack traces

carmine nacelle
#

storedBeeNames is a list taken from the PDC, CustomHive is an object I made.

wet breach
#

I am aware CustomHive is an object you made

carmine nacelle
#

Yeah

#

Im modifying a completely different list than the one im looping over

wet breach
#

while that may be the case

#

if this is done async you will still get a CME

carmine nacelle
#

🤔

#

Why

wet breach
#

because Concurrency doesn't just mean trying to remove and add at the same time

#

but also means from multiple sources

#

IE, maybe another thread

carmine nacelle
#

Im not modifying the list while looping over it though..

#

thats what i dont get.

#
        customHive.getBeeUUIDs().add(customBee.getUniqueId());
        customHive.getBeeNames().add(customBee.getCustomName());

it also only has the issue when I add the names, its fine with the UUIDs.

#

both done the same way.

wet breach
#

what is on this line com.squallz.cadiabees.listeners.PlaceHiveListener.onHivePlace(PlaceHiveListener.java:123

carmine nacelle
#

thats line 123

wet breach
#

where does storedBeeNames come from?

#

show the code for that

carmine nacelle
#

it gives me the CME, but the thing im actually doing there works 100% perfectly

wet breach
#

or show CustomHive

#

the class for that

carmine nacelle
#
 List<String> storedBeeNames = new ArrayList<>();

            if(pdcManager.isNewHive(heldItem)) {
                storedBeeAmt = 1;
                hiveLevel = hiveLevelManager.getHiveLevel(pdcManager.getStoredHiveLevel(heldItem));
                storedBeeNames.add(ColorUtil.color("#6a06fbB#8c21fce#ae3bfde"));
                customHive = new CustomHive(
                    UUID.randomUUID(),
                    heldItem.getItemMeta().getDisplayName(),
                    hiveLevel,
                    HiveStatus.PRODUCING,
                    storedBeeAmt,
                    0,
                    player.getUniqueId(),
                    beehive.getLocation(),
                    new ArrayList<>(),
                    storedBeeNames,
                    new ArrayList<>(),
                    new ArrayList<>()
                );
            }

"isNewHive" is just checking a namespacedkey on the itemstack.

wet breach
#

its having an issue in regards to an itemstack

wet breach
#

you don't need a method to allow access to things you don't handle just fyi

wet breach
carmine nacelle
#

That is used

wet breach
#

no, it doesn't do anything is what I am saying

#

you could just make the list public instead

carmine nacelle
#

but getters are the proper way, no?

wet breach
#

getter is pointless if the getter does nothing

carmine nacelle
#

it returns the private list

wet breach
#

which you can do by making the list public

#

which is no different

carmine nacelle
#

I mean I guess

wet breach
#

anyways, is this being used in a concurrent way?

carmine nacelle
#

Which part?

wet breach
#

well you can't only use partial of the object in concurrency either it is or isn't

carmine nacelle
#

its used all over the place

#

again it only has the issue with this "names" part, nothing else

wet breach
#

Well Array Lists are not thread safe

#

no matter if you touch it or not, if its part of an object that is in a thread

#

and then something touches that list from the main thread

#

it will still throw a CME

carmine nacelle
#

wtf

wet breach
#

however there is an easy fix well hopefully

#

just add synchronized to your array list methods

carmine nacelle
#

Which methods

wet breach
#

any of them that touch Array Lists

#

whether its returning the list, to adding or removing

#

this forces anything that touches those methods to wait on whatever is to finish

#

ideally you should be making use of things that is thread safe though

#

if the object is intended to be used in multiple threads or in a concurrent way

keen orchid
#

I know this isnt the right channel, or anything but does anyone wanna be a dev for me

carmine nacelle
worldly ingot
#

The CME isn't thread related

#
List<String> beeNames = // ...
for (String beeName : beeNames) {
    beeNames.add("");
}```
#

This is equivalent to what you're doing

carmine nacelle
#

How?

worldly ingot
#

Your spawnBee() method is adding to beeNames while you're iterating over it

#
    customHive.getBeeNames().add(customBee.getCustomName());
wet breach
#

yep that is it

carmine nacelle
#

Im iterating over a list from the PDC and adding them to the CustomHive object

#

2 different things

wet breach
#

CopyOnWriteArrayList is thread safe fyi

carmine nacelle
#

well actually, its a completely new arraylist.

Im making the arraylist, adding things to it, then looping over it afterwards

worldly ingot
#

Well something in that loop is adding to that list

#

That's the only reason you'd get a CME pointing to that loop

carmine nacelle
worldly ingot
#

Yeah, same ArrayList

carmine nacelle
#

but the bottom shouldnt run before the top..

#

theres quite a few things between there

worldly ingot
#

Doesn't matter. If you were to print out storedBeeNames == customHive.getBeeNames() you would get true

carmine nacelle
#

How? its 2 different lists

worldly ingot
#

How do you propose it's two different lists?

carmine nacelle
#

One is created in PlaceHiveListener, the other is created in CustomHive

#

can I SS this?

wet breach
#

unless you are cloning them, the one in CustomHive doesn't go anywhere

carmine nacelle
#

I just dont get how its possible that it could be the same list

wet breach
#

well show us how you think they are different

worldly ingot
#

storedBeeNames

#

You're passing it to the constructor of CustomHive and you're iterating over it

#

beeManager#spawnBee(customHive, beeName) adds to CustomHive's beeNames list which you passed storedBeeNames to

carmine nacelle
#

I dont think so..

#

this is a big plugin its hard to explain everything going on just by pasting some code and trying to explain with text

#

can anyone join gen 1 so I can screenshare

wet breach
#

what Choco said is indeed the problem

carmine nacelle
#

I still dont understand how, or how to solve it easily.

wet breach
#

in your method to feed an array

#

make it clone it

#

and then only touch the clone in that method that needed the list

carmine nacelle
#

method to feed an array..

#

can you join vc so I can at least ss? you dont gotta talk or anything.

#

@worldly ingot ?

wet breach
#

VC doesn't allow screen sharing here

carmine nacelle
#

Not really.

#

its not the actual problem

#

i promise

#

im not that stupid.

wet breach
#

you say that, but your error says otherwise

#

the simplest solution is in your Object clone the array

#

before doing anything

carmine nacelle
#

im not passing the list into the object.

wet breach
#

but you are...

carmine nacelle
#

where

wet breach
#

Choco already pointed it out to you

carmine nacelle
#

I dont see it

wet breach
#

do you just not know how constructors work?

carmine nacelle
#

im grabbing the list from the object and adding an item to it

alpine cairn
#

?paste

undone axleBOT
carmine nacelle
#

im not passing an entire list in

#
        customHive.getBeeUUIDs().add(customBee.getUniqueId());
        customHive.getBeeNames().add(customBee.getCustomName());

grabbing the list from the object and adding to it, not passing an entire list into the object.

#

and the one in my for loop is an entirely different list

alpine cairn
carmine nacelle
#

Caused by: org.bukkit.plugin.InvalidDescriptionException: Restricted name, cannot use 0x20 (space character) in a plugin name.

wet breach
#

use underscores in places of a space

alpine cairn
#

hmm

#

The jar doesn't

carmine nacelle
#

name field in plugin.yml

alpine cairn
#

Oh I see

#

Thanks

wet breach
#

hmm had the same reaction as me

carmine nacelle
#

not the issue.

alpine cairn
#

org.bukkit.plugin.InvalidPluginException: Cannot find main class `org.psychicraft.testplugin.TestPlugin'

#

What could be causing this?

carmine nacelle
#

ok i removed the getters for the lists 💀

#

didnt fix my issue

alpine cairn
#

But the main class doesn't need to literally be named "main" does it?

alpine cairn
#

so how do I make it recognize my main class?

undone axleBOT
alpine cairn
#

No need I see what I did wrong

#

I have two classes in one place

#

yeah...

carmine nacelle
#

this is so stupid bro

wet breach
#

just trace where the list is going

#

shouldn't be that hard to see that something is being add or removed at the same time

#

if thats much of an issue I already gave you a list that is thread safe or made for concurrent stuff

fast violet
#

why is this

shadow owl
#

Does anyone have experience placing default structures using the StructureManager? I'm trying to place one of the new Trail Ruins structures but the loadStructure function is returning a null Structure:

Bukkit.getStructureManager().loadStructure(Structure.TRAIL_RUINS.getKey(), true).place(getCenter(), true, StructureRotation.NONE, Mirror.NONE, -1, 1, new Random());```
ornate patio
#

how can i create a command that opens up the anvil gui

#

and still uses all registered custom recipes

atomic swift
#

why does it say that OfflinePlayer.getName().toLowerCase() may produce 'NullPointerException

river oracle
#

you can put in some arbitrary random UUID

#

and it'll return an offline Player Object

#

?jd-s

undone axleBOT
atomic swift
river oracle
#
Gets the player by the given UUID, regardless if they are offline or online.

This will return an object even if the player does not exist. To this method, all players will exist.
ornate patio
#

cant access any development threads

atomic swift
ornate patio
#

i have

#

cloudflare is blocking me

river oracle
#

ignore the warning and move forward

atomic swift
ornate patio
#

probably not

river oracle
ornate patio
atomic swift
river oracle
ornate patio
river oracle
ornate patio
#

i've already done that

river oracle
#

yk I had this same issue at school and could neever figure it out

ornate patio
#

im not even getting any error codes or anything, it's just stuck in an inifnite loading loop

vague mason
# ornate patio

Have similar problem few days ago. md_5 did migrated to new Cloudflare WAF and whitelisted me (or change general rules) to unblock me.

vague mason
#

md_5 did changed the firewall rules in Cloudflare

#

You can try disabling all your extensions and test again, just to check if problem is on your end.

ornate patio
#

so that mightve fixed it for you but broke it for me

vague mason
#

and also try it from your phone

ornate patio
#

lemme see

vague mason
#

so we will see if Cloudflare is blocking your IP or not.

ornate patio
#

my phone works

#

hmm

#

it might be cause i do lots of web scraping

#

but like on other sites not spigot

vague mason
#

If you are web scraping just buy a cheap VPS, never do that on your network

ornate patio
#

but im not blocked from those

vague mason
ornate patio
#

damn

vague mason
#

wait no thread

#

don't know how to write it in English

#

threat*

ornate patio
#

so im basically permanently blocked from spigot then huh

vague mason
#

if you stop attacking other sites (web scraping) your threat score will also get lower.

wet breach
#

so after a bit of time you will get a new one

ornate patio
wet breach
#

yeah

ornate patio
#

because cloudflare easily detects VPNs

#

sure I could use a VPS but that would take forever to test

wet breach
#

you can use a vps as a vpn

#

anyways it usually takes 3-7 days for the isp to automatically refresh your ip

#

sometimes you can shorten this by resetting the modem

ornate patio
#

and how would that help with quick testing

ornate patio
wet breach
#

because you could still do the testing on your machine, but use the vps for its ip

vague mason
#

So your IP would then slowly become clean again

ornate patio
#

hmm

wet breach
#

all a vpn is, is just a fancy proxy

ornate patio
#

well at that point why do i need a vps

#

cant i just use a proxy server

#

like a private one

wet breach
#

proxy servers are different in that it makes use of software to re-route traffic as opposed to hardware where vpn's work

vague mason
#

You can buy thousands of proxy IPs for cheap, but they are usually slow.

wet breach
#

yeah and they give up they are a proxy too

vague mason
#

so then your scraper can just change IPs every x minutes

ornate patio
#

the thing is im not even scraping that instensely

#

like i only run a script once or twice a month

#

which only lasts like 5-10 minutes

vague mason
#

What are you even scraping if I might ask? There is usually a better solution to scraping...

ornate patio
#

just a bunch of random shit

vague mason
ornate patio
#

ill look into a digital ocean vps then tho

wet breach
#

its probably nothing you even did

#

you are not the only one that may have used the ip you have

#

sounds like where ever you live that ISP is known to have people or bots doing shady stuff lol

vague mason
#

I mean scraping for 5 to 10 minutes is basically an attack. So it makes sense for Cloudflare to mark your IP as shady

#

but if you do like 30 requests per every hours, it should be a lot more stealth.

#

and more like legit traffic

ornate patio
#

yeah but then i'd just have to leave my pc on for a lot longer

#

its just kinda annoying

#

and then sometimes it runs into an obscure error and i gotta restart it

#

cause web scraping is just really unpredictable

wet breach
vague mason
#

Scraper should never crash. Even if the error is detected. It should probably just ignore it and move on.

ornate patio
#

and then it becomes unclickable

#

i still try to make it ignore errors if possible, but sometimes it just doesn't work

vague mason
#

Are you scraping like other gigs / prices and compare them?

ornate patio
#

also how can I check if an itemstack is a weapon or piece of armor

#

without having to list out every single material

hard acorn
#
repositories {
  maven { url "https://repo.dmulloy2.net/repository/public/" }
}

dependencies {
  compileOnly 'com.comphenix.protocol:ProtocolLib:5.0.0'
}```

am I going crazy or something? I'm trying to install protocollib, I'm following the instruction and putting this in build.gradle, but it will absolutely refuse to load it
#

2 of the 4 errors I'm getting are
Unexpected tokens (use ';' to separate expressions on the same line)

#

One is
Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public val NamedDomainObjectContainer<Configuration>.compileOnly: NamedDomainObjectProvider<Configuration> defined in org.gradle.kotlin.dsl

river oracle
#

you're using kotlin the example is in groovie

hard acorn
#

Oh

ornate patio
#

is it possible to get the material of an itemstack armor piece or weapon

#

without listing them all out manually

river oracle
river oracle
#

wouldn't you just use ItemStack#getType

ornate patio
#

like I want to get Material.IRON from Material.IRON_SWORD somehow

#

if yknow what i mean

#

or Material.DIAMOND from MATERIAL.DIAMOND_HELMET

#

like get the material that is used to repair that item in an anvil

#

or do i have to manually list everything

river oracle
ornate patio
#

thats kinda scuffed tho

#

and also slow

#

whater copilot helped me type this abomination

river oracle
ornate patio
#

what is that

river oracle
#

sick of writing slow java code? just write C instead laugh

carmine nacelle
hard acorn
# ornate patio

you COULD just split the Material string using the "_" character

ornate patio
hard acorn
ornate patio
river oracle
ornate patio
#

it just bothers me lmfao

river oracle
#

you might as well start doing manual Memory Management with Unsafe xD

#

it'll be slow, but it'll be unsafe as hell

ornate patio
#

i have no idea what that is

river oracle
#

it allows fine tuned memory management

#

you get access to memory addresses etc though I believe they are phasing it out, though i forgot what they are replacing it with

ornate patio
#

but like what even is it

#

a java library?

river oracle
#

its internal Utilities you can expose afiak

#

it isn't really meant to be used

ornate patio
#

i see

river oracle
#

v

#

seriously thuogh just do String.split don't go fucking crazy :P

ornate patio
#

its literally just like ocd

#

it'll bother me forever

#

that i can make it faster

river oracle
#

go use C or Assembly

#

or just use pure JNI though it maybe slower with the overhead conversion

ornate patio
#

honestly considering learning it 😭

river oracle
#

JNI is going to be fun :D

ornate patio
#

maybe later

#

the thing is

#

i also just need a list

#

of all armor and tools

#

to check of an itemstack is a piece of gear

#

so either way i need to make a huge list

river oracle
#

speed doesn't matter in that case

#

make it on startup

#

premature optimizations lead to bad code anyways

hard acorn
#

find if your itemstack.getType().toString() contains "HELMET", "CHESTPLATE", "LEGGINGS", "BOOTS", "SWORD", "AXE", etc.

#

would that work?

#

you'll still need a list to contain all those keywords but 6 elements is better than 50

ornate patio
#

I guess that could work

#

alright fine

#

i'll use split

#

im getting a headache from my own code lmao

cobalt thorn
vague mason
#

Vault plugin. I'm currently using player names, but the API says that player names are deprecated and that I should use OfflinePlayers.

Would there be any benefits to switch to Offline players? Like performance?

rough ibex
cobalt thorn
rough ibex
#

ah

wraith dragon
carmine nacelle
#
    public void despawnHologram(Player player, Hologram hologram) throws InvocationTargetException {
        List<Integer> holoIDs = hologram.getHoloIDs();
        PacketContainer packet = this.protocolManager.createPacket(Server.ENTITY_DESTROY);
        packet.getModifier().write(0, holoIDs);
        this.protocolManager.sendServerPacket(player, packet);
    }

Any idea why this isn't working for all players on the server? I'm running it in a for loop, and all players get the message along with it but its like it just chooses one random player to send the ENTITY_DESTROY packet to, and it doesnt send to anyone else

vague mason
#

if server is cracked or not, both have usernames anyways

#

and then getOfflinePlayer is depracated too...

kind hatch
#

#getOfflinePlayer(String name) is only deprecated because people kept storing player data using player names instead of UUIDs.
It's not going to be removed.

wraith dragon
#

you can use offlineplayer to get their data

carmine nacelle
rare rover
#

with mojang mappings

carmine nacelle
#

Couldn’t figure it out

#

Too complicated and all the online examples are outdated

sullen marlin
#

tfw apparently windows 12 is coming next year

carmine nacelle
#

Oh god no..

sullen marlin
#

still can't believe microsoft told us windows 10 would be the last version

carmine nacelle
#

Kek

jagged monolith
carmine nacelle
#

What color will they make the start button this time? Orange? Pink?

rare rover
#

windows 12 will basically be windows 11 but with ai integration

#

for my understanding

carmine nacelle
#

Great..

vague mason
#

Why can't they just upgrade Windows 11?

rare rover
#

because its microsoft

vague mason
#

So computer manufactorers would need to buy new licenses just for Windows 12?

rare rover
#

i mean probably not, windows 11 was free for 70% of people

#

they might do the same with windows 12

#

but i doubt it'll come out next year

#

there's no way

#

windows 11 ain't even close to done

vague mason
#

Manufacturers still need to pay for it

rare rover
#

i can see it in many of the programs

#

ye

#

like this is clearly from windows 10

#

ain't updated yet

wet breach
#

windows 11 wasn't really suppose to be a thing

#

someone caught a glimpse of something they weren't suppose to see and microsoft tried to capitalize on it because they saw people were interested

#

rushed something out the door and tried to call it good

#

reminds me of one of those cartoons where they try to sell you whatever it is you want even by dressing up something else to look like it XD

umbral ridge
#

I'm still in Windows 10, I don't like 11, too many animations, new taskbar looks like shit.. the OS have to be fast, snappy, I don't want translucent windows, I'm still kind of used to the good old Windows 7 which in my opinion was one of the best.

grizzled oasis
#

How can i convert an Arraylist to a ...String?

drowsy helm
#

depends whats in the list

grizzled oasis
#

Enchants

drowsy helm
#

iterate over each item and append it to a string

grizzled oasis
#

conflit.forEach(enchantment -> {}) so in this way?

umbral ridge
#

You could use .stream() which a list has

#
list.stream().map(Object::toString).collect(Collectors.joining(", "))
#

or the other way

#

with a for loop

#
String enchantmentsString = "";
for (Enchantment s : list)
{
    enchantmentsString += s.name() + " ";
}```
#

Or just

String.join(separator, arrayList)
#

But idk if this will actually return the enchantment name or rather the enchantment object

grizzled oasis
umbral ridge
# grizzled oasis probably this could help out on understanding what im doing, im taking from a co...

.stream() converts the arraylist to a list object,

.map(Object::toString) calls toString() on each mapped object... you could use lambda on this as well like so .map(element -> element.toString()),

the .collect(Collectors.joining(", ")) part collects the elements of the stream in a string,

and Collectors.joining(", ") specifies a delimeter between the strings, it returns a string that represents the concatenation of all the elements in the stream

#

You can use the for loop though, if it's more understanding to you 🙂

grizzled oasis
#

same as before code if you want it

            ArrayList<Enchantment> conflit = new ArrayList<>();
            for(String ignored : config.getStringList(main + name + "conflicts")) {
                conflit.add(Enchantment.getByName(ignored));
            }

            enchantments.add(new CustomEnchants(id, name, maxLevel, false, cursed, target, conflit.stream().map(element -> element.toString()).collect(Collectors.joining(" ,"))));
umbral ridge
#

Oh it's a constructor problem

grizzled oasis
remote swallow
#

do you use the enchant enum names in config or actual names

remote swallow
#

print the list to console and check if its null/empty

umbral ridge
#

Are these not supposed to be separated by a dot?

grizzled oasis
umbral ridge
grizzled oasis
#

that would be

confilts:
  - Luck
umbral ridge
#

Then it should be

config.getStringList(main + "." + name + "." + "conflicts")
grizzled oasis
umbral ridge
#

Ohh

grizzled oasis
#

i need only to make them to an ArrayList to a ...Enchants for the constructor

remote swallow
#

an array list would fit enchantment varargs

grizzled oasis
remote swallow
#

use List<Enchantment> as the value, not ArrayList<Enchantment>

remote swallow
grizzled oasis
#

?paste

undone axleBOT
grizzled oasis
umbral ridge
#

It does accept the variable argument

#

Hm

remote swallow
#

what does the error actually say, that constructor should accept a list

umbral ridge
#

It needs a list of enchantments not strings

grizzled oasis
remote swallow
#

its giving you a generic

#

pass the list conflicts list

#

without modifying its contents

#

enchantments.add(new CustomEnchants(id, name, maxLevel, false, cursed, target, conflit));

grizzled oasis
remote swallow
#
            List<Enchantment> conflit = new ArrayList<>();
            for(String ignored : config.getStringList(main + name + "conflicts")) {
                conflit.add(Enchantment.getByName(ignored));
            }

            enchantments.add(new CustomEnchants(id, name, maxLevel, false, cursed, target, conflit));
umbral ridge
#

can you use conflit.stream().toList(); ?

grizzled oasis
remote swallow
#

what java version are you on

grizzled oasis
umbral ridge
#

Yeah toList() was intruduced in java 16.. For what version are you developing the plugin?

remote swallow
#

my discord is dying, i cant see or read any messages

umbral ridge
#

my discord too

remote swallow
#

idk how ur calling a private constructor also

#

something doesnt add up

grizzled oasis
#

1.12.2

remote swallow
#

discords coming back to life now

grizzled oasis
umbral ridge
remote swallow
#

you cant

#

8 is the latest 1.12 supports

umbral ridge
#

rip

chrome beacon
#

11 should work fine too

grizzled oasis
#

let me upgrade it

#

ok done

#

im disabling the feature for now

quaint mantle
#

if i use kotlin would it just work the same as java except different syntax or are there changes in the spigot package

#

i know both but i prefer kotlin so thats why

west bone
#

building the plugin with mojang maps taking too long, is there a way to fix it?

remote swallow
#

run a mojmapped server and dont remap every build

#

do note you should only ever do this for testing and never in prod

west bone
#

wdym do not remap everybuild

remote swallow
#

add a profile in maven, only remap the plugin when its enabled

#

the part that takes the longest is the remapping, so your plugin uses obsfucated mappings to work on normal servers

analog vapor
#

Quick question, how do I prevent players from dropping loot when they die other than keep inventory?

chrome beacon
#

Why not use keep inventory?

analog vapor
#

Because they get sent back to spawn and we want them to have no items in their inventory

chrome beacon
#

Ah then just clear the drops

white briar
#

I'm developing a plugin that uses the Spigot API but I'm using paperMC server software to test it can I still ask questions about my plugin's development in here or should I use Spigot as server too?

umbral ridge
#

yes

#

but

#

?whereami

white briar
#

yes to which one?

umbral ridge
#

I'm using paper as my server and spigot as my coding api too

#

XD

fast violet
sullen marlin
#

is there a reason you are using dev mode?

fast violet
#

Use CraftBukkit as library.

sullen marlin
#

not supported

#

also --compile craftbukkit

fast violet
#

not supported?

sullen marlin
#

Spigot is the library

#

no reason for craftbukkit use, internal only

young vine
young vine
#

but accessing internals obviously is never supported, you should use the api instead, or if its missing something, suggest new api

young vine
#

love the integer overflow tho 😄

tender shard
#

it's a float

eternal night
#

floating overfloating

remote swallow
analog vapor
tender shard
young knoll
#

Boi you better round that float

chrome beacon
umbral ridge
#

Nice!!

vast ledge
#

ye

#

epic

quaint mantle
#

ok i found the bug and it was kinda stupid, i imported org.bukkit not org.bukkit.x lol

#

turns out the "package" option isnt the package you gotta import its the package its in

#

so now it works (yay)

#

but my ide is bugged so i have to switch to replit (nay)

vast ledge
#

use intellij idea

#

its best

quaint mantle
#

i can-/

#

i code on mobile

young knoll
#

Oof

quaint mantle
#

ye

#

lol

#

and if ur wondering how i can test it out, i open up a mc java server and connect via floodgate geysr
lol

remote swallow
#

does no one you know have a laptop or a pc?

quaint mantle
#

we were travelling

#

and we had no need for i

#

it*

#

either way i'd have to buy minecraft java

#

or bedrock on the pc

#

i only have it on mobile

remote swallow
#

you could still test on ur phone but code on pc

quaint mantle
#

eh alr

native pebble
#

let's coding together

quaint mantle
#

no

remote swallow
#

its kotlin

#

no

quaint mantle
#

wdym its kotlin

remote swallow
#

they''re coding in kotlin

quaint mantle
#

ah

#

tbh i prefer kotlin over java lol

remote swallow
#

smh

quaint mantle
#

lol

#

i mean java/typescript being my first programming language probably influenced the choice

young vine
dawn plover
quaint mantle
#

yeah boiio

dawn plover
#

kotlin is just way cleaner then java

quaint mantle
#

agree

dawn plover
#

and has more

quaint mantle
#

also i have had a hatred for oop ever since i learnt js classes

dawn plover
#

js is also pain, use at least typescript then

quaint mantle
#

i use jsdoc

#

and compile it with tsc

native pebble
#

Kotlin is a moderate language between
Java <-> Scala
less overpower

young knoll
#

Var and Val everywhere

#

😔

tender shard
#

especially if it's 34°C outside in real life lol

vast ledge
#

its 38° Here

young vine
#

its so annoying, lol

vast ledge
#

cries in heat

young vine
#

like, I disabled sound on that vid

#

35 here rn

#

but thunderstorm coming

young knoll
#

Disabling rain sound in real life is harder

tender shard
#

Yay i‘ll also get a thunderstorm

quaint mantle
#

45 degrees average in the afternoon

#

amateurs

placid moss
#

bros living in the sahara

tender shard
#

i was in death valley in 2008 and they had a temperature of over 50°C

#

but it wasn't that bad because it wasn't humid at all

remote swallow
#

sorry that was me

placid moss
quaint mantle
#

im living in qatar

#

well travelling

placid moss
#

😮 i didnt know it was that hot there lmao

#

i live in aus and highest temperatures in summer are liek 41

young knoll
#

We love global warming

quaint mantle
#

its like 43-42 average even before evening

placid moss
#

wow

tender shard
#

thank god I got air conditioning

placid moss
#

so true props to the dude that invented aircon

quaint mantle
#

or weird random technologies. JUST REFOREST THE EARTH

placid moss
#

wow so easy to do

#

why didnt i think of that

quaint mantle
#

it can also help provide food and help global hunger (or the economy)

placid moss
#

tru

quaint mantle
#

the economy if you're a politician, global hunger if you're a human

placid moss
#

sorry i am an alien

#

what is it for me

tender shard
#

sometimes IJ's error messages are not very useful

#

that error should appear in line 5 and not 6 ff

placid moss
#

you: forgets a bracket
IJ: yea lets add red lines on every line i can find in the file except for the line you need the bracket on

tender shard
#

yeah it's a bit confusing lol

median bronze
#

how can I force a server side packet using protocol

umbral ridge
native pebble
#

reload what?

wild basin
#

Help me to make a reload cmd

#

so when I save something in config and I do the cmd /ghost reload it make the config up to date in game

native pebble
#

Just put yourPluginInstance.reloadConfig() in your command executor

wild basin
#

package be.kod3ra.ghostac.cmd;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

import be.kod3ra.ghostac.Main;

public class GhostReloadCommand implements CommandExecutor {

private final Main plugin;

public GhostReloadCommand(Main plugin) {
    this.plugin = plugin;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (args.length > 0) {
        sender.sendMessage("§cUsage: /ghost reload");
        return true;
    }

    plugin.reloadConfig();

    sender.sendMessage("§d§lGhost §8-> §7Plugin successfully reloaded.");
    return true;
}

}

native pebble
#

Command implementation seems good

#

Where class do you use the plugin#getConfig() ?

#

How you use the config

#

ok

wild basin
#

getCommand("ghostreload").setExecutor(new GhostReloadCommand(this));

umbral ridge
#

in public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
do

if (cmd.getName().equalsIgnoreCase("yourmaincmd"))
{
if (args[0].equalsInogreCase("reload"))
...
}

native pebble
#

okay you said you typed command /ghost reload then your command name should be ghost

#

So you should getCommand("ghost")

wild basin
#

else if (command.startsWith("/ghost reload")) {
event.setCancelled(true);
event.setMessage("/ghostreload");
Bukkit.dispatchCommand(event.getPlayer(), "ghostreload");

chilly hearth
#

How do I specify doot

native pebble
#

What is printing when you typed /ghost reload?

chilly hearth
#

Slot*

wild basin
#

§d§lGhost §8-> §7Plugin successfully reloaded.

remote swallow
#

do you cache the config in any classes

native pebble
#

So you need to find where you use the config

umbral ridge
#
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  if (!(sender instanceof Player))
    return false;
            
  if (cmd.getName().equalsIgnoreCase("ghost")) {
    if (args.length == 0) {
      // .. your main command message without params
    }
            
    if (args.length == 1) {
      if (args[0].equalsIgnoreCase("reload")) {
        // your reload functionality..
        <main_class>.saveConfig();
        <main_class>.reloadConfig();
        player.sendMessage("config reloaded");
      }
    }
  }        
  return false;
}```
native pebble
#

The reload command and config just ok

#

Your concern now where you use the config

remote swallow
#

why are you checking the command

remote swallow
#

the class is only ever gonna be called for the commands its registered to

umbral ridge
#

it's an example for him

#

not for specific class

#

its not for specific command

remote swallow
#

you still should never need to check the command name

umbral ridge
#

You can if have just one class, it's bad practice but its still possible

remote swallow
#

heres ur issue'

#

you dont need to do that

#

just call getConfig()

wild basin
#

it is not my code

remote swallow
#

spigot loads it for you

wild basin
#

package be.kod3ra.ghostac.cmd;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

import be.kod3ra.ghostac.Main;

public class GhostReloadCommand implements CommandExecutor {

private final Main plugin;

public GhostReloadCommand(Main plugin) {
    this.plugin = plugin;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (args.length > 0) {
        sender.sendMessage("§cUsage: /ghost reload");
        return true;
    }

    plugin.reloadConfig();

    sender.sendMessage("§d§lGhost §8-> §7Plugin successfully reloaded.");
    return true;
}

}

#

this is my code but is doesn't work

native pebble
#

You can use just reloadConfig() and when you use it just call getConfig()

#

I really need where you use the config

hazy parrot
native pebble
#

You loaded config and reloaded then you will use this config right?

tender shard
native pebble
#

So let me see your getConfig() usage

#

Yes if you don't know what I mean

grizzled oasis
#

how can i make an array of string work into this method, define(String @NotNull ... lines)?

native pebble
#

@wild basin Let me see your whole code

grizzled oasis
# tender shard wdym?

i have a string list like this
pattern:
- XXXXXXXXX
- XOOOOOOOX
- XXXXOXXXX
- XXXXOXXXX
- XXXXOXXXX
- XXXXOXXXX
and i wanted to use it for this method define(String @NotNull ... lines);
But java doesn't like this so how can i fix this?

tender shard
#

toArray

hazy parrot
#

What exactly it doesn't like

drowsy helm
#

Why the not null annotation there

tender shard
#
String[] myStrings = myList.toArray(new String[0]);
grizzled oasis
drowsy helm
#

I mean in the middle of the param declaration

remote swallow
tender shard
#

the IntFunction is java 11 +

hazy parrot
grizzled oasis
hazy parrot
quaint mantle
#

someone know any api for discord connecting with minecraft ?

#

i mean if discord user connect account to ingame minecraft account

#

gets some features

hazy parrot
#

Why do you need api for that

#

Just use some discord wrapper (jda) , and save uuid <-> discord snowflake yourself

quaint mantle
#

u mean can i do this with database ?

#

test

#

why my messages isnot

hazy parrot
#

Discord is lagging

quaint mantle
#

discord is ded ?

silent steeple
#

is there bukkit server src

hazy parrot
#

To make things easier, you can even run discord bot inside of spigot plugin

hazy parrot
zealous osprey
#

?paste

undone axleBOT
quaint mantle
#

do u have idea for do this ?

hazy parrot
undone axleBOT
hazy parrot
hazy parrot
gentle vortex
#

hey, so i have a question. i'm not sure if this is possible? (i've tried recalculating permissions, but its not enough)
so if i set myself as op, all commands autofill (so if i type /setp, minecraft will give me all the options, /setperm being the one i want)
if i remove the op, and only maintain my owner rank (yes i am making a custom ranking thing, just for the fun of it), the autofill is gone
the command still works, i still have the perm and everything, but if im not op, the command just simply does not autofill
is there a way to fix that?

silent steeple
#

where is the impl

#

like where is the part that makes events work

#

for example

hazy parrot
remote swallow
#

is my brain not working or should this be false if (event.getAction() != Action.RIGHT_CLICK_AIR || event.getAction() != Action.RIGHT_CLICK_BLOCK) return; the action is right click air

zealous osprey
#

Heya, I'm trying to display a webpage via some code, I have all the assets, htmls, css and js, but it doesn't render correctly, maybe someone has an idea?
https://paste.md-5.net/xusupidudi.java
(Left image is the website displayed b the code; Right is as it should be and how it is if I execute the html natively)
I do want to note, it seems that the css isn't really applying correctly, but idk why

hazy parrot
remote swallow
gentle vortex
silent steeple
#

oh yeah the craftbukkit has the stuff i need

zealous osprey
#

wait, no, now it's fine... well the paths, but not the site

hazy parrot
#

Open site, press ctrl + u, and try opening css path it's linking to

#

See what it's trying to open

zealous osprey
#

I'm letting the console print out what the server is requesting
And everything seems in order

vale ember
#

Why does this happen when i run buildtools?

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 526 for URL: https://static.spigotmc.org/maven/apache-maven-3.6.0-bin.zip
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1997)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
    at java.base/java.net.URL.openStream(URL.java:1161)
    at com.google.common.io.Resources$UrlByteSource.openStream(Resources.java:72)
    at com.google.common.io.ByteSource.read(ByteSource.java:296)
    at com.google.common.io.Resources.toByteArray(Resources.java:98)
    at org.spigotmc.builder.Builder.download(Builder.java:1172)
    at org.spigotmc.builder.Builder.main(Builder.java:394)
    at org.spigotmc.builder.Bootstrap.main(Bootstrap.java:27)
zealous osprey
#

seems to be linking the right files

hazy parrot
zealous osprey
#

I have

hazy parrot
zealous osprey
#

ye

zealous osprey
hazy parrot
zealous osprey
#

Thanks for trying though :D

hazy parrot
#

Tbh I would just use jetty or some library on top of it such as javalin then pure java httpserver,it seems like pain

zealous osprey
#

nooo, wtf happened

eternal night
#

I mean

#

you set the content type of text/html

#

for everything

#

obviously that is not gonna work out

zealous osprey
#

But I did link up the css using <link type="text/css" href="styles/editor.css" rel="stylesheet" />

eternal night
#

Yea but your server response with a content type text/html

#

when the browser requests the css file

#

Which, your browser properly does not load

zealous osprey
hushed spindle
#

so i had a plugin that registered a bunch of smithing recipes with armor and their respective ingots with custom metadata and stuff, and with 1.20 these recipes no longer register to the server. im assuming this is because of the armor template recipes and the server considering my custom recipes duplicates of those despite my custom recipes not having a template. is there any way to make these recipes register anyway?

sullen canyon
#

hmm that resembles me of an entity looking humanoid

#

entity humanoid

pallid stump
#

Hi! I'm running into an issue,
When I set the playertime non-relative, it correctly freezes the time. But in-game you can still see the sun jitter up and down.
player.setPlayerTime(newPlayerTime, false);
I can;t find anything about this in the Spigot docs.

"the player's time is absolute and will not change its current time unless done so with setPlayerTime()."

Am I missing something here?

sullen canyon
#

what is newPlayerTime

rose trail
pallid stump
#
   private void transitionPlayerTime(Player player, long targetTime) {
        player.setPlayerTime(targetTime, false);
    }

This has the same result, (e.g. removing the task).

sterile breach
#

Hi, how to set the tabcompletion of a command coming from another plugin?

hushed spindle
#

i would assume you could listen to a TabCompleteEvent and check the plugin of the command it's coming from and then just change or set the suggestions

rose trail
#

i have a command and it has to wait until another method is executed, how to implement this?

hybrid coral
#

/give @s player_head{SkullOwner:<username>} 1

hybrid coral
sterile breach
hushed spindle
#

TabCompleteEvent is an event that exists yes

hushed spindle
sterile breach
#

thanks

eternal oxide
#

do that task you need to wait on and then operate on teh result

sterile breach
hushed spindle
#

uh, yes

#

the method has a list of strings which is what the command typer will see

#

you can change this list or replace it entirely

quaint mantle
#

How do i get all players in a world?
So if i want a command that shows how many players there are in each world

flint coyote
quaint mantle
#

I dont know how to use it
Its for when you type /list it sends this so there can be more worlds but it only sends for world a, b and c
A: players in world a B: players in world b C: players in world c

eternal oxide
#

Iterate over Bukkit.getWorlds()

hushed spindle
#

or iterate over players on the server and just get their world

#

its not difficult lol

hard socket
#

how do I fix this

remote swallow
#

im pretty sure thats saying the connection is denied

hard socket
#

I cant access the control panel

remote swallow
#

idk much about pma

#

im an adminer user

hard socket
remote swallow
#

personal preference

#

he didit a few days ago smh

hard socket
#

will give it a try

remote swallow
#

this does have a custom theme on

hard socket
#

this?

remote swallow
#

yeah

hard socket
#

how do I run it?

remote swallow
#

nginx or apache

quaint mantle
#

switch (clickedItem.getItemMeta().getDisplayName()) { case "White": CColourUtils.setColour(p, CColour.WHITE); p.sendMessage(ChatColor.GOLD + "Your chat colour has been updated!"); case "§cRed": if (kills >= 10) { CColourUtils.setColour(p, CColour.RED); p.sendMessage(ChatColor.GOLD + "Your chat colour has been updated!"); } else { p.sendMessage(ChatColor.GOLD + "You don't have the required kills for that chat colour."); } }

Hey, im trying to use a switch statement to carry out different actions depending on what the item name of the clicked item is (1.20) however it just activates all of them. Am I doing something wrong with the switch statmenet?

remote swallow
#

you dont break, either add break; to the end of them all or use lambda type cases

#

case "e" -> {}

quaint mantle
#

oh

#

Simple mistake

#

I forgot

#

whoops

#

that is embarassing for me

lavish cliff
remote swallow
#

?codeblock

undone axleBOT
#

You can use the discord code block format to display code or just text in a more pleasing way:
```java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {

}

}```
Becomes:

public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {

    }
}```
quaint mantle
#

👍 Thank you

quaint mantle
silent steeple
#

paper or purpur whats the most performant

#

or anything else thats performant?

fluid river
#

purpur ig

#

it's yet another fork of paper

silent steeple
#

ight

worldly ingot
#

If you feel you need performance further beyond Paper, I feel like maybe the issue isn't the server software, it's the plugins you're running ;p

#

You're really not going to get any better performance from a derivative fork of Paper

#

Maybe a few tens of nanoseconds that won't make a massive impact

silent steeple
#

oh nah its gonna be a server for like 6 players

#

with 32gb of ram im just cruious

#

curious

worldly ingot
#

Oh then you really don't need anything more than Paper

#

You could probably even use Spigot if you really wanted to lol

remote swallow
#

paper is only ever needed on low spec servers

#

everything else can roin spigot

echo basalt
#

32gb ram for 6 players

#

mans running a private minigame network or something

worldly ingot
#

That's pretty overkill too

#

12 tops is fine

echo basalt
#

insert java gc meme here

alpine urchin
#

wait choco favors paper confirmed

#

what fork do you use choco

eternal night
#

all the cool kids use yatopia

silent steeple
#

its gonna be a survival server

#

i just dont want lag

echo basalt
#

All the cool kids use mojang's server

eternal night
#

truuuu, vanilla all the way

silent steeple
#

bruh im having errors wtf is

#

14:40:44 WARN]: **** FAILED TO BIND TO PORT!

#

how do i check whats using the port

eternal night
#

depends on the os

silent steeple
#

linux

eternal night
#

quick google should have yielded you either netstat or lsof

silent steeple
#

yeah i did netstat and its showing no processes

agile laurel
#

Do you bind to a port less than 1024 ?

#

For < 1024 you need super user capabilities

river oracle
#

Or is the port already bound 🧠

silent steeple
#

no i bind to 25565

#

ima change it to 25566

river oracle
silent steeple
#

im pretty sure its not

river oracle
#

Sometimes they don't close ports properly and don't shut down correctly

#

Pretty sure isnt really good enough

#

Use htop

silent steeple
#

where is the port in htop

river oracle
#

Check for java tasks king

#

On port 25565 ofc

#

Idk i don't use htop

silent steeple
#

wait is it cuz server-ip=

#

i put the ip at the end of that

river oracle
#

No

#

You don't need to

quaint mantle
#

im hsoting my paper server on my pc rn lol it lags like crazy

river oracle
quaint mantle
#

well

#

for other people

river oracle
#

Oh

eternal night
river oracle
#

Then get better internet

quaint mantle
river oracle
#

Sorry wrong thing

quaint mantle
#

im not upgrading for years lol

quaint mantle
river oracle
#

Yeah you need better internet though

quaint mantle
#

i need that

#

but i might get it hosted eventually

#

if it takes off

river oracle
#

Public server on your home network

quaint mantle
#

👍

river oracle
#

Oof sounds risqué I like it

quaint mantle
#

yez

silent steeple
#

i removed the ip from server.properties and it works now??

quaint mantle
#

im using feather rn to host it

#

i get a free domain

river oracle
eternal night
river oracle
#

It's kinda uSeLess

#

It auto binds ong

eternal night
#

I mean, it is nice if you want to bind to a specific subnet

silent steeple
river oracle
remote swallow
#

are you using ur public ip or localhost

silent steeple
eternal night
#

pls no

remote swallow
#

theres ur issue

silent steeple
#

why

eternal night
#

just don't put anything

remote swallow
#

im guessing you arent port forwarded

crystal latch
#

Hello, with custom npc how to execute a command to the player who clicks on it?

silent steeple
eternal night
#

your PC cannot bind a port to the public facing IP address if your router

remote swallow
silent steeple
eternal night
#

I mean, neither can your machine ?

remote swallow
silent steeple
#

google cloud

eternal night
river oracle
#

Google cloud ☁️

eternal night
remote swallow
#

is it open in ufw or ip tables

river oracle
silent steeple
remote swallow
#

do ufw status

silent steeple
#

Status: active

#
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
river oracle
#

A part of me feels like google cloud isn't gonna be great for mc servers

silent steeple
#

im going to sudo reboot

remote swallow
#

it should show something like this

silent steeple
#

it says nothing like that