#help-development

1 messages · Page 470 of 1

tardy delta
#

idk im not the spigot packets guy

tawny pine
tardy delta
#

no enter bed

wet breach
# tardy delta no enter bed
WrappedDataWatcher w = WrappedDataWatcher.getEntityWatcher(p).deepClone();

w.setObject(6, EntityPose.SLEEPING);
w.setObject(13, Optional.of(b));
tardy delta
#

dont remind me of that

#

im only doing packets on minestom currently

wet breach
#

lol

weak meteor
#

Im making a broadcast message and i have this:

My code:

redeemMesage = PlaceholderAPI.setPlaceholders((Player) sender, redeemMesage);
                redeemMesage = Utils.player(redeemMesage, sender.getName());
                Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', redeemMesage));

redeemMesage in config:

reclaimBroadcast: "&e{player} &fjust redeemed his %vault_prefix% &fperks! /reclaim!"

I dont know how to fix that... Someone help?

#

ive tried with %vault_prefix% and %luckperms_prefix%

#

i understand that it is not being compatible with hex code.

#

prefix: &7[&#9c00fbN&#7a02fco&#5903fex&#3705ff+&7]

wet breach
#

use components instead 🙂

#

should most likely resolve your issue with hex

weak meteor
#

k

wet breach
tawny pine
wet breach
#

seems you mis-understand the implementations

tawny pine
wet breach
#

spigot is built on top of craftbukkit

#

so, you can do it with spigot

tawny pine
wet breach
#

correct

tawny pine
wet breach
#

because stuff has changed

tawny pine
wet breach
#

whatever guide you are reading is most likely not up to date with the given mc version

tawny pine
wet breach
#

therefore, its not going to be 100% translatable and you will have to do some research to figure out what changes need to be made

wet breach
#

this includes imports

#

as classes get removed, added or combined

tawny pine
tawny pine
wet breach
#

not sure what you mean

tawny pine
wet breach
#

yes but also no

#

its better to just say spigot, since CB is not developed really anymore

tawny pine
#

oh ok

wet breach
#

spigot maintains CB but only for the purpose of the fact spigot is built on top of it 😛

wet breach
#

you would need to hook into the network manager stuff in NMS to send packets. You can't use it to send Custom packets that the protocol isn't implemented with. And if you try to send a packet to a client without using the network manager, the client will either ignore it or it might crash. Exception being unless the client has a mod that would be listening for something like this.

misty current
#

can you get the world of a chunk generator in the method generateNoise?

tender shard
#

no

#

well you could use Bukkit.getWorld(...) but what's the purpose?

misty current
#

use FAWE's api to generate structures

desert musk
#

how can you get the time alive of a player?

#

should you create your own tracker for it?

lost matrix
plush nest
#

Uhm, is the glass plane not a thing in the 1.8.8 api?

desert musk
lost matrix
#

Also

#

?1.8

undone axleBOT
plush nest
lost matrix
desert musk
#

cool

#

but it doesn't reset on deaths does it

#

so i have to create my own tracker for that?

lost matrix
lost matrix
desert musk
#

oh wow ok

#

sweet

#

let me see

lost matrix
#

Might also reset on rejoin. You should test that.

desert musk
#

i will

fervent gate
#

does FileConfiguration.setComments(section, "comment") not work? It should work but doesn't do anything

eternal oxide
#

yes it works, so long as the section exists

desert musk
#

it's just the total time alive

fervent gate
desert frigate
#

ive already fixed it, i didnt have a provider installed

desert musk
#
long timeAlive = System.currentTimeMillis() - (objective.getScore(player.getName()).getScore() * 1000);
#

nevermind

#

answer is in player.getStatistic(Statistic.TIME_SINCE_DEATH)

desert musk
#

why not

lost matrix
#

Because you are subtracting a relative time from a total time

desert musk
#

oh

#

well it's not the one i'm using now

desert musk
#

i didn't know about player stats

lost matrix
#

lul

fervent gate
eternal oxide
#

don;t add default

#

add section

#

so set

#

remove your copydefaults line too. Don;t mess with defaults until you understand them.

fervent gate
eternal oxide
#

yes it will

#

if you want to update you have to load it, add your new data and save

fervent gate
#

How would I do it without .addDefault and .set then?

eternal oxide
#

you don't use addDefault

#

default is just what it will offer IF the section doesn't exist

fervent gate
#

which is what I want really

eternal oxide
#

no you want to replace

#

or add to

fervent gate
#

I never want to replace anything the user has written if the user follows the correct format

#

I just want to generate a config first time for the user to fill and tweak

eternal oxide
#

yes you want to add your data, by the looks if it's not already in there

#

then only add data if it's empty

fervent gate
#

which is exactly what addDefault does isn't it?

eternal oxide
#

do you want to fill missing sections, leaving others intact?

fervent gate
#

yes

#

and in turn generate a full config with comments the first time or when they delete config

eternal oxide
#

in that case, load the file, addDefaults, THEN copyDefaults and save

tawny pine
#

guys if i teleport a sleeping npc, will they stay in the sleeping pose?

fervent gate
undone axleBOT
eternal oxide
true perch
#

What's the most efficient way to send data from one server to another? Does it require Bungeecord to be setup?

fervent gate
eternal oxide
#

the comments should be there after it is saved

fervent gate
#

cuz that is what I have right now and it doesn't add them until I reload the server/plugin for the first time

eternal oxide
#

yes add comments after copydefaults and before saving

quaint mantle
#

yall know how servers like Hypixel skyblock keep track of players skill xp and stuff like that? they cant possibly have files for all that can they?

tardy delta
#

is chatgpt breaking every 10 minutes now?

quaint mantle
#

not for me

quaint mantle
echo basalt
#

Are you aware of how a database cluster works?

quaint mantle
#

not really

#

basic nothing more

#

basics*

echo basalt
#

OKay, let's start from the basics

#

MongoDB is a Database Management Software

#

Which means it has the ability to create and manage databases

#

It exposes a port, and with certain credentials your application and log in and access a database

#

So you can, for example, say "Hello MongoDB, I'm this minecraft plugin and I want to store this player data"

#

and mongodb will reply "consider it done" type deal

#

And it will store that data to a drive and index it

#

So that you can later go there and say "Hey mongodb, what's the player data associated with the uuid <uuid>?" and it will spit out whatever it has

quaint mantle
#

damn

#

okay

#

thx

#

one more question

echo basalt
#

What's cool about mongodb is that you can cluster it

#

So you can have multiple mongodb servers working together

#

and they can all keep track of where all of the data is

quaint mantle
tender shard
#

can't every DB do that?

#

the cluster stuff

echo basalt
#

Not every

#

but all the mainstream ones can

tender shard
#

yeah that's what I thought

echo basalt
echo basalt
#

MongoDB isn't focused on the lowest latency and highest performance, but rather it's robust data structure

#

If you want extra fast performance, you can use Redis as a caching layer

#

Honestly storage time across redis and mongo aren't that different

#

but read times on redis are quite faster

tawny pine
#

guys how can i add craftbukkit to my plugin?

echo basalt
sacred mountain
#

guys can anyone tell me if theres a real risk to use /reload on a mainly vanilla server with just my own plugin testing on

#

since it doesnt seem to affect anything

#

(compared with /stop)

idle iron
#

Anyone know how to set a custom range for mobs? I have been searching for a long time and have found nothing.

tawny pine
echo basalt
echo basalt
sacred mountain
#

just for plugin support

echo basalt
#

uhh

#

yeah no Citizens won't be happy

sacred mountain
#

lol alright

idle iron
tawny pine
#

paper doesn't change that.

echo basalt
#

that's not how it works

idle iron
#

Umm, ok thanks.

tawny pine
echo basalt
#

yeah you can just fuck with attributes from what I remember

sacred mountain
#

anyone else like coding libraries that you know you're never actually going to use, but it looks cool when you use generics (it makes me feel like a pro)

idle iron
tawny pine
river oracle
#

I avoid them as much as I can

sacred mountain
sacred mountain
#

i use abstraction / interfaces for most of my projects

#

theyre useful now i know (sort of ) what im doing

tawny pine
# idle iron Reach

I don't think you can change that either since it's also a vanilla mechanic, but if you're willing to change from that mechanic, you could add a custom damage system.

sacred mountain
#

mlmao

river oracle
echo basalt
river oracle
#

Only reason it exists too is because I hate how default serialized values look

#

They aren't human readable at all

#

Obviously there is an easier solution to this

idle iron
river oracle
#

But I opted for the hard solution

sacred mountain
echo basalt
#

you can play around and change it if you like NMS

sacred mountain
#

you won't be able to tell what anything does

#

and yes i can't either

river oracle
sacred mountain
#

is anyone available to join my 1.19.4 testing server for a sec, i wanna see if the past 2 hours has fixed somethjing

#

i have no friends

#

oh and since im lazy does anyone have an api for base attribute modifications like attack speed and movement speed with user friendly parameters like blocks per second or attack interval in milliseconds

abstract sorrel
#

does anyone know how i would create a nms plugin for 1.19.4?

opal wedge
#

Hello,

I am currently programming a plugin that changes the skin. After updating the new PlayerProfile via ProtocolLib, I currently have to teleport the player to another dimension for a short time so that the skin changes. Is there a more elegant way to bypass the teleportation?

idle iron
# echo basalt

I can't make it work properly It's a little bit advanced for me. Can you help me set it up?

echo basalt
#

well

#

what do you have right now

plush nest
#

Can somebody send me a link to a tutorial about how to create guis and stuff?

echo basalt
plush nest
#

Thank you

hushed scaffold
#

hi , im new to plugin development and tried to set up a basic project in intelij idea , i added the spigot api with how the spigot api as a dependency but im still getting an error with anything that mentions bukkit or spigot.

remote swallow
#

?bootstrap

undone axleBOT
#

Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.

Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163

plush nest
plush nest
hushed scaffold
#

._.

#

thank you

#

ill see if that works

plush nest
#

No problem just download it

idle iron
# echo basalt what do you have right now
            @Override
            public void run() {
                if (spawnedCount < 15) {
                    Location spawnLocation = randomLocationNear(witherSpawnLocation, 10);
                    WitherSkeleton witherSkeleton = (WitherSkeleton) spawnLocation.getWorld().spawnEntity(spawnLocation, EntityType.WITHER_SKELETON);


                    ItemStack axe = new ItemStack(Material.NETHERITE_AXE);
                    axe.addEnchantment(Enchantment.MENDING, 1);
                    witherSkeleton.getEquipment().setItemInOffHand(axe);

                    witherSkeleton.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(50);
                    witherSkeleton.setHealth(50);

                    witherSkeleton.setCustomNameVisible(true);
                    witherSkeleton.customName(Component.text("§cWither Skeleton boss"));
                    witherSkeleton.setCanPickupItems(false);
                    witherSkeleton.setRemoveWhenFarAway(false);
                    witherSkeleton.setGlowing(true);


                    ItemStack sword = new ItemStack(Material.NETHERITE_SWORD);
                    sword.addUnsafeEnchantment(Enchantment.KNOCKBACK, 20);
                    witherSkeleton.getEquipment().setItemInMainHand(sword);

                    spawnedCount++;
                    spawnGlowingEffect(witherSkeleton);
                }
            }
        }.runTaskTimer(this, 0, 100L);```
echo basalt
#

mhm okay

#

so you'll need to like

#

use proper NMS to modify such fields

remote swallow
#

Someone go get alexs blog post

abstract sorrel
#

anyone know how i would set up a project using nms in 1.19.4 with intellij idea?

hushed scaffold
echo basalt
#

you'll need to override the getMeleeRange on the nms MeleeGoal

plush nest
abstract sorrel
#

?nms

hushed scaffold
#

what does maven change

tender shard
hushed scaffold
#

ah

#

so just make a new project with maven?

tender shard
#

yep, that's what I'd suggest. see the link above

hushed scaffold
#

alrighty

#

sorry for the dumb questions

#

also are there any other intelij plugins ya suggest using or just the minecraft development one

echo basalt
#

minecraft plugin development like

#

nukes your ram iirc

#

I still use it because I got a ton of ram and honestly don't care

#

but watch out for that

#

I also use github copilot, wakatime, Statistics

tawny pine
#

guys will
import org.bukkit.craftbukkit.*;
import all of the craftbukkit packages?

echo basalt
tawny pine
echo basalt
#

oh god

tender shard
#

Dont you use an IDE? o0

#

That handles imports automatically

echo basalt
#

well

#

he's probably importing spigot-api

tender shard
#

But then the import would already not work

echo basalt
#

which it probably doesnt

tawny pine
tawny pine
eternal oxide
#

is the import underlined red?

tawny pine
#

no errors

#

apart from when i try to use things from it

#

:/

#

then those things aren't recognised

remote swallow
#

maven or gradle

eternal oxide
#

depending on spigot or spigot-api?

tawny pine
tawny pine
remote swallow
#

?paste your pom

undone axleBOT
eternal oxide
#

doesn;t matter what you import if your dependencies are wrong

tawny pine
tawny pine
remote swallow
#

your still depending on spigot-api

#

change spigot-api to spigot on line 69

eternal oxide
#

yep you are depending on spigot-api. That has no craftbukkit code

remote swallow
#

make sure to run buildtools

tawny pine
tawny pine
#

thats what it says :/

remote swallow
#

have you ran buildtools

tawny pine
young knoll
#

?bt

undone axleBOT
remote swallow
#

?bt should all be explaned on here

undone axleBOT
tawny pine
tender shard
#

Yes

#

Run buildtools for that spigot version, then reload maven

tawny pine
#

I get Error: Unable to access jarfile BuildTools.jar

#

when i try it using git bash

eternal oxide
#

We shoudl really ask why you are importing craftbukkit, what are you trying to do?

tawny pine
chrome beacon
#

but why

tawny pine
#

i keep seeing them in code which looks useful

eternal oxide
#

for what reason

tawny pine
#

if there is an easier way to do that please tell me

eternal oxide
#

unless you 100% can;t do it through the API you shoudl completely avoid CraftServer/NMS

tawny pine
#

:/

tawny pine
#

i just wanna use bukkit

eternal oxide
#

What are you calling an NPC? Do you mean a villager?

tawny pine
eternal oxide
#

is this custom player NPC from some other plugin?

tawny pine
#

I'm trying to make a plugin do display dead (sleeping) player bodies, similar to how it is done on hypixel/mineplex

tawny pine
young knoll
#

Citizens API has entered the chat

tawny pine
tawny pine
eternal oxide
#

unlikely

tawny pine
tawny pine
young knoll
#

No

#

Well

#

With ProtcolLib you can

tawny pine
eternal oxide
#

you will need NMS/CraftBukkit then

tawny pine
eternal oxide
eternal oxide
#

you still need to run buildtools though

#

That vids out dated as it's for 1.17

#

but it's only minor changes

dire marsh
#

all you have to do is spawn a fake player and set their pose

#

you don't even need a bed location

flint coyote
#

What are the conditions for a TreeSet to reject a value and return false on TreeSet#add()?
The documentation says

     * the set contains no element {@code e2} such that
     * {@code Objects.equals(e, e2)}.```

However, I get the following output:

[19:30:50 INFO]: [EventEngine] [STDOUT] Size: 1
[19:30:50 INFO]: [EventEngine] [STDOUT] Already in: space FullProtection
[19:30:50 INFO]: [EventEngine] [STDOUT] Not added: testarea FullProtection

When running this code:
```java
        TreeSet<RegionEvent> regionEvents = eventListeners.get(event);
        if (!regionEvents.add(regionEvent)) {
            System.out.println("Size: " + regionEvents.size());
            RegionEvent alreadyIn = regionEvents.stream().findFirst().get();
            RegionEvent notAdded = regionEvent;
            System.out.println("Already in: " + alreadyIn);
            System.out.println("Not added: " + notAdded);
            if (Objects.equals(alreadyIn, notAdded)) {
                System.out.println("yes, equal");
            }
        }

The last part ("yes, equal") is never printed.

The toString() was just a quick test to get some reasonable result. It looks like this:

public String toString() {
        return this.getRegion().getId() + " " + eventConfiguration.getId();
    }

Therefore it is clearly visible, that both objects are NOT equal. I did not override equals() and hashcode() but there's no way they point to the same memory address.
I usually don't work with TreeSets so what am I missing here?

#

If it matters, this is how I constructed the TreeSet, does the Comparator also prevents equal insertions? Because the same priority can (and does) occur multiple times.

new TreeSet<>(Comparator.comparingInt(event2 -> event2.getRegion().getConfiguration().getPriority()));
keen basin
#

did anyone know how to clear this menu or add some items ?

tardy delta
#

hmm does ::equals actually matters in a treeset or is it just ::compareTo == 0 that accounts for that?

tardy delta
keen basin
#

ok thank you

flint coyote
#

According to documentation they use Objects.equals(). But I'm starting to think that they actually use the comparator in order to determine whether entries are unique

true perch
#

If I run a Hub server and Game server where I want them both to access certain systems, should I just bundle all of my systems into an API and start making standalone plugins for both servers which use said API? Should I add the commands I develop to the API or should they just be added to both plugins as needed? Or should I just completely copy and paste the plugin between both servers?

kind hatch
tardy delta
#

hmm i just modified it with packets 😂

keen basin
kind hatch
#

Or actually

#

There is Player#undiscoverRecipies() that takes a list of recipies.

#

So just feed that method #getDiscoveredRecipies()

keen basin
#

thank you (:

worldly mountain
true perch
# worldly mountain Depends on the use case i would say

Making a MMO where players can access their items from a Hub server. This would allow me to add things such as a marketplace or additional fun small resource demanding bits of content for players. In that case the Hub would need to have access to the custom Items system, for instance. However I may not want the Hub to have access to a custom Combat system.

quaint mantle
#

anyone know how i can automatically start the dragon respawning

true perch
#

I was thinking it could be a good idea to just add the Item system to an API which is a library read in two separate plugins

quaint mantle
#

like the DragonBattle class or smth

smoky adder
#

I'm trying to see which item I have in hand with .getItemInHand, I used it in the playerHitEvent event but it gives an error in the line where it says getItemInMainHand how do I do it?

smoky adder
#

Wait One sec

true perch
# worldly mountain Hmm

Problem is I've never made an API and I don't know what the typical practices are for it. Would it be okay to add all of my commands to the API so both servers use them both? Should I just add the commands to each plugin separately? Not sure what the protocol is.

worldly mountain
#

What is the error?

worldly mountain
#

I think that’s what I would do

keen basin
remote swallow
keen basin
#

thanks (:

smoky adder
#

wait again one sec

remote swallow
#

?img

undone axleBOT
remote swallow
#

or imgur

worldly mountain
#

Or DM me :p

undone axleBOT
fluid river
#

next time

smoky adder
tardy delta
smoky adder
#

I already tried it doesn't work 😦

tardy delta
#

id save some data into the pdc of that item, then check if its present within the config and create it

#

?pdc

flint coyote
#

I wonder when 1.8 servers will die for good. Sure, some people like the combat system of 1.8 but at this point that version is so old that 1.19 pvp servers probably still have more players

flint coyote
#

what's mmc?

kind hatch
hybrid spoke
#

mc*, where the latest version is the 1.19.4

#

is that something we should know?

dire marsh
#

wat

#

never heard of it

#

lmao

flint coyote
#

Same lol

river oracle
#

Mine man club

hybrid spoke
#

probably a 10 player server

dire marsh
#

that's why then

#

don't play 1.7/1.8

flint coyote
#

Isn't there a gamerule to disable the hit cooldown?

river oracle
#

No

dire marsh
#

attack speed attribute can be modified

hybrid spoke
#

"worlds biggest"

quaint mantle
#

anyone know how i can start a dragonbattle as if someone placed the end crystals

flint coyote
young knoll
#

Oh no

#

You can disable those too

flint coyote
flint coyote
#

But you could nerf the damage, ye

#

So why 1.8?

hybrid spoke
river oracle
river oracle
smoky adder
flint coyote
kind hatch
#

Idk, I personally hate the shield warm up mechanic. That needs to go like it has in the combat snapshots.

flint coyote
smoky adder
quaint mantle
#

anyone know how i can start an ender dragon battle as if someone placed the end crystals

hybrid spoke
flint coyote
#

Tell me why

kind hatch
quaint mantle
#

automatically

#

doesnt need to place them

#

just do the anim

hybrid spoke
smoky adder
quaint mantle
#

maybe this

#

then i put START

flint coyote
#

technics?

hybrid spoke
#

you can also hit blocks in 1.19

kind hatch
#

You mean mechanics?

flint coyote
#

The only tradeoff with 1.19 is that swords can no longer block. Everything else could be changed

hybrid spoke
#

look down and leftclick

kind hatch
remote swallow
#

because its made to have instances probably

echo basalt
quaint mantle
#

actuallly nvm

quaint mantle
kind hatch
quaint mantle
#

exactly what i need but it doesnt let me use the m ethod

remote swallow
undone axleBOT
kind hatch
quaint mantle
#

ok got it

remote swallow
flint coyote
#

Then get urself an instance of the DragonBattle World#getEnderDragonBattle()

quaint mantle
#

can i just do this

#

DragonBattle dragonBattle = ((EnderDragon) e.getEntity()).getDragonBattle();

#

and then dragonBattle.initiateRespawn();

flint coyote
#

huh

#

what's e?

quaint mantle
#

event

#

EntityDeathEvent

flint coyote
#

No. It's a method of World, not an entity

kind hatch
#

It actually is part of the EnderDragon class.

#

Although I'd stick with the World method if it were me.

quaint mantle
#

alright

flint coyote
#

Oh in that case it might work. I'd also use the world tho

worldly ingot
#

A bit of a poor doc tbh

flint coyote
#

Try it without and if it doesn't work blame Choco 😛

worldly ingot
#

Can probably be resolved by adding a new method that passes in a List<EnderCrystal>

quaint mantle
#

what about this

#
            DragonBattle dragonBattle = world.getEnderDragonBattle();```
flint coyote
#

Yes, make sure this code never runs in any other world tho. It will result in a NullPointerException

quaint mantle
#

yeah

#

i mean where else will a dragon die

worldly ingot
#

In the overworld maybe?

flint coyote
#

The dragon dies where admins want it to die lol

worldly ingot
#

There are some creative survival mode players that have gotten dragons in the overworld before lol

kind hatch
#

There are also plugins that let you ride the dragon in the overworld.

quaint mantle
#

bruh alright

#

wtf

eternal oxide
#

I wrote a plugin that spawned dragon nests in the overworld

flint coyote
#

Maybe we get EnderDragon mob spawners in the overworld in 1.21 /s

kind hatch
worldly ingot
#

A firecracker PES_Hypers

quaint mantle
#
@EventHandler
    public void onDragonDeath(EntityDeathEvent e) {
        if (e.getEntityType() == EntityType.ENDER_DRAGON) {
            int delayTicks = main.getConfig().getInt("dragon-respawn-timer");
            EnderDragon dragon = (EnderDragon) e.getEntity();
            World world = dragon.getWorld();
            DragonBattle dragonBattle = world.getEnderDragonBattle();
            BukkitScheduler scheduler = main.getServer().getScheduler();
            scheduler.scheduleSyncDelayedTask(main, new Runnable() {
                @Override
                public void run() {
                    dragonBattle.initiateRespawn();
                }
            }, delayTicks);
        }
    }```
#

didnt do anything

#

no errors either

flint coyote
#

Now you blame Choco for not mentioning the missing crystals in the documentation 😛

quaint mantle
#

damn

flint coyote
#

No but seriously, you will need the 4 crystals placed. You can also do that using code

kind hatch
#

Probably not the same instance.

quaint mantle
#

isnt it inventoryclickevent

#

it is i think

#

try it

quaint mantle
flint coyote
#

doesn't it always spawn at x0 z0? And then at highestBlock?

quaint mantle
#

oh yeah its at 0 0

#

thats so useful

kind hatch
#

Or you can use DragonBattle#getEndPortalLocation()

#

The y level can change.

flint coyote
#

Which is probably the smarter idea lmao

quaint mantle
#

hello.

#

i have a question that might be far too unrelated for this server.

#

like outstanding unrelated probably.

#

very much not relevant.

hybrid spoke
#

?ask

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!

quaint mantle
#

does anyone know anything about nukkit for bedrock edition of minecraft?

hybrid spoke
#

?ask

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!

flint coyote
#

I know that it's also based on java so there's that. Besides that, no

quaint mantle
#

i am trying to do something and i wanna create some communication between a java and bedrock edition server.

hybrid spoke
#

that has probably nothing to do with nukkit or anything else minecraft related

quaint mantle
#

np

hybrid spoke
#

if so just use it

quaint mantle
#

the world is in bedrock edition and they are separate servers.

#

nvm.

regal scaffold
#

?minigame

#

Is there a command for the minigame structure guide?

quaint mantle
#

this is kinda cursed

#
                    world1.spawn(new Location(world1, 0 + endPortalLocation.getX(), endPortalLocation.getY(), 3 + endPortalLocation.getZ()), EnderCrystal.class);
                    world1.spawn(new Location(world1, -3 + endPortalLocation.getX(), endPortalLocation.getY(), 0 + endPortalLocation.getZ()), EnderCrystal.class);
                    world1.spawn(new Location(world1, 0 + endPortalLocation.getX(), endPortalLocation.getY(), -3 + endPortalLocation.getZ()), EnderCrystal.class);
regal scaffold
#

You're spawnning them relative to the corners

#

Not the center

#

Either add .5 to everything or use getBlockX or whatever it is to get a integer instead of a doubel

quaint mantle
#

oh yeah

regal scaffold
#

Of course it's allowed but just have in mind that means you can pass ANY object

#

Instead, make a interface to identify the objects you want, make those objects implement the interface

#

Learn

#

Cause what you're doing is a bad idea

#

I explained what you need to do, now it's a 10 minute read

#

In reality you actually want Abstract class instead of interface

#

But they both go hand in hand

#

What actual datatype are you wanting to be the Object GUI? @quaint mantle

#

I assume it's more than 1 because of your question

quaint mantle
#

im so bad atmaths what am i doing wrong

regal scaffold
#

If you're making a GUI Handler

#

Then you need a abstract class

quaint mantle
#

this is my code

#
                    Location loc2 = new Location(world, endPortalLocation.getX() + 0.5, endPortalLocation.getY(), endPortalLocation.getZ() + 3.5);
                    Location loc3 = new Location(world, endPortalLocation.getX() - 3.5, endPortalLocation.getY(), endPortalLocation.getZ() + 0.5);
                    Location loc4 = new Location(world, endPortalLocation.getX() + 0.5, endPortalLocation.getY(), endPortalLocation.getZ() - 3.5);
                    world.spawn(loc1, EnderCrystal.class);
                    world.spawn(loc2, EnderCrystal.class);
                    world.spawn(loc3, EnderCrystal.class);
                    world.spawn(loc4, EnderCrystal.class);      ```
regal scaffold
#

Use getBlockX()

#

And ignore the .3

#

.5*

quaint mantle
#
world.spawn(new Location(world, x + 3, y, z), EnderCrystal.class);
world.spawn(new Location(world, x - 3, y, z), EnderCrystal.class);
world.spawn(new Location(world, x, y, z + 3), EnderCrystal.class);
world.spawn(new Location(world, x, y, z - 3), EnderCrystal.class);
#

right

regal scaffold
#

?gui

gleaming grove
#

From my experience GUI with abstract class is easier and faster to implement. However Interface approach makes code more flexible and easier to maintain

regal scaffold
#

Yes

#

What I sent is a guide, explaining everything you need to know

#

Don't just copy paste it... what's the point of the text in the guide then

#

Read what he does, then make your own

quaint mantle
#

i did that and its still of

regal scaffold
#

Show

quaint mantle
#

int x = dragonBattle.getEndPortalLocation().getBlockX();
int y = dragonBattle.getEndPortalLocation().getBlockY();
int z = dragonBattle.getEndPortalLocation().getBlockZ();

                world.spawn(new Location(world, x + 3, y, z), EnderCrystal.class);
                world.spawn(new Location(world, x - 3, y, z), EnderCrystal.class);
                world.spawn(new Location(world, x, y, z + 3), EnderCrystal.class);
                world.spawn(new Location(world, x, y, z - 3), EnderCrystal.class);
#

this is my code

regal scaffold
#

How far off

quaint mantle
regal scaffold
quaint mantle
#

yeah

regal scaffold
#

In there, correct?

quaint mantle
#

yeah

regal scaffold
#

The 1 bedrock under

quaint mantle
#

yeah

#

its not visible

regal scaffold
#

Yup

kind hatch
#

So, just clone the location and add 1 to the Y coord.

quaint mantle
#

i already addyed

regal scaffold
#

^

quaint mantle
#

world.spawn(new Location(world, x + 3, y + 1, z), EnderCrystal.class);
world.spawn(new Location(world, x - 3, y + 1, z), EnderCrystal.class);
world.spawn(new Location(world, x, y + 1, z + 3), EnderCrystal.class);
world.spawn(new Location(world, x, y + 1, z - 3), EnderCrystal.class);

regal scaffold
#

Clone it

kind hatch
#

Location#clone()

regal scaffold
#

Always easier to work with

quaint mantle
#

oh

#

they arent centered though

regal scaffold
#
        DragonBattle dragonBattle = null;
        Location location = dragonBattle.getEndPortalLocation().clone();
        int x = location.getBlockX();
        int y = location.getBlockY() + 1;
        int z = location.getBlockZ();

        world.spawn(new Location(world, x + 3, y, z), EnderCrystal.class);
        world.spawn(new Location(world, x - 3, y, z), EnderCrystal.class);
        world.spawn(new Location(world, x, y, z + 3), EnderCrystal.class);
        world.spawn(new Location(world, x, y, z - 3), EnderCrystal.class);
    }
quaint mantle
#

wait are these even the right end crystals

#

they have that thing

regal scaffold
#

#setShowingBottom(false)

quaint mantle
#

oh

regal scaffold
#

That does seem to be weirdly centered tho

#

It's not even in the actual corner

#

Unless the bases of ender crystals are bigger than just 1 block

eternal oxide
#
Location location = dragonBattle.getEndPortalLocation().clone().add(0,1,0);
world.spawn(location.clone().add(3,0,0), EnderCrystal.class);```
quaint mantle
#

i dont know whats going on

regal scaffold
#

Try with 1

quaint mantle
#

try what

regal scaffold
#

What elgarl said

#

1 crystal first

quaint mantle
#

oh

eternal oxide
#

simple to adjust then

regal scaffold
#

But it's weird that it's not centered anyways elgarl

quaint mantle
regal scaffold
#

idk if the base is bigger than 1 block

quaint mantle
#

thats the sizre

#

size

regal scaffold
#

Then yeah

#

Clearly bigger

quaint mantle
#

yeah

regal scaffold
#

Disable the base and try what elgarl said first, if using integers doesn't work ( Which would be weird ) play around with decimal blocks

eternal oxide
#

those adds are actually doubles

quaint mantle
#

ok

regal scaffold
#

Oh yeah you did to doubles

#

idk why

eternal oxide
#

a crystal is somethign like 1.5 blocks in size (I think)

regal scaffold
#

Then yeah gonna need getX instead of getBlockX like before,

#

Why are crystals 1.5blocks we will never know

eternal oxide
#

so offset by 0.7 or so

quaint mantle
#

this is elgarls

#

its still off

regal scaffold
#

Print out

#

The location from getPortal

quaint mantle
#

its 0, 63.0, 0

eternal oxide
#

add 0.5

regal scaffold
#

^

quaint mantle
#

to what

regal scaffold
#

x

quaint mantle
#

every x and z

#

or just x

eternal oxide
#

x and z

regal scaffold
#

Try both but I think x and z

quaint mantle
#

ok

eternal oxide
#

you are currently spawnign it in the corner of a block

#

which is what the getBlockX returns

#

or all BlockPositions to be precise

quaint mantle
#

this off

#

world.spawn(location.clone().add(3.5,0,0), EnderCrystal.class);

eternal oxide
#

so add 3.5 toi X and minus 0.5 from Z

quaint mantle
#

oh ye

eternal oxide
#

or plus, depending on which direction you are going

quaint mantle
#

ye its plus

regal scaffold
#

Elgarl

#

If I'm making a game and refining BoundingBox areas

#

What's a good way to do checks on the areas

#

I could create temporary regions with worldguard and use worldguardRegionEvents

eternal oxide
#

refining? checks?

regal scaffold
#

Like for example, so a player can walk into the area instead of needing a command

#

But prevent others from walking in, etc

quaint mantle
#

world.spawn(location.clone().add(3.5,0,-0.5), EnderCrystal.class);

regal scaffold
#

I don't think listening to playerMoveEvent is smart

quaint mantle
#

yooooooooooooooooooo

#

thanks guys it works

eternal oxide
#

are these areas random sizes or specific , like a set of chunks?

regal scaffold
#

They are specific

#

It's literally a BoundingBox

#
    @Setter
    @Getter
    private BoundingBox bounds;
eternal oxide
#

yes but my question really was about the positioning, like, are they covering whole chunks?

regal scaffold
#

No they are not

eternal oxide
#

ok

regal scaffold
#

They can be any shape

#

In this case a volleyball court

eternal oxide
#

but they expand to cover x blocks and not half blocks

regal scaffold
#

3 areas

eternal oxide
#

ok do yoru own listener

regal scaffold
eternal oxide
#

for player move, changing blocks

regal scaffold
#

Really?

#

Is that the best?

#

I hate listening to playermoveevent

eternal oxide
#

yes, it's what worldguard will do

regal scaffold
#

Well you'

#

you're right about that

eternal oxide
#

you ignore every move event that doesn;t result in teh player moving into a different block

regal scaffold
#

That's a good idea indeed to optimize a bit

#

Alright thanks

eternal oxide
#

you can do that really easily with math or just use teh events getFrom() and getTo() then getBlock() on each and check for ==

regal scaffold
#

Yup

eternal oxide
#

you can use == as it's an instance check because the block reference will be the same for the same block

regal scaffold
#

👍

#

What datatype allows a list of unique values

#

Like UUID

So it can't have the same UUID added twice

#

Set<>

winged anvil
#

y’all

#

i just got a mf gig for some company

#

to create an android app

#

someone with commission experience help me find out what to charge

eternal oxide
#

get a full project spec before negotiating price

abstract sorrel
#

did nms change the packet for player info because i was following a tutorial and the

ClientboundPlayerInfoPacket

doesn't exist

eternal oxide
#

yes

#

which version?

abstract sorrel
#

1.19.4

eternal oxide
#

yes

abstract sorrel
#

do you know the name of the new packet?

quaint mantle
#

when a player places an end crystal, is it a block or entity they are placing

young knoll
#

Entity

quaint mantle
#

oh k

eternal oxide
#

ClientboundPlayerInfoUpdatePacket, ClientboundPlayerInfoRemovePacket and ClientboundSetEntityDataPacket

young knoll
#

It fires the EntityPlaceEvent

abstract sorrel
#

so which one would i use to replace it

eternal oxide
#
ClientboundPlayerInfoUpdatePacket playerInfoAdd = new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, serverPlayer);```
rotund lotus
eternal oxide
#

unless you are sendign skin info updates, then it's the entity packet

#

depends, can be air or null

#

some inventories return null, others return air

quaint mantle
#

bruh the bukkit logger is so bad

rotund lotus
#

depends how you grab them i think, if you grab contents, it will be nothing

remote swallow
#

iirc cant you addItem() and it returns a map of what it couldnt add

tawdry echo
#

ItemStack type cant be null?

young knoll
#

Correct

tawdry echo
river oracle
abstract sorrel
#

i made a plugin with nms but when i load it into the server and run the command it errors can someone help

river oracle
#

?ask

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!

river oracle
#

?paste

undone axleBOT
abstract sorrel
#

oh do you want me to paste the code?

quaint mantle
#

how do i send an actionbar

#

to the player

tawdry echo
pseudo hazel
#

.equals(null) gives an error

#

just use == like xemuain said

tawdry echo
river oracle
#

just do == yeah

abstract sorrel
#

can anyone help i'm following a tutorial on making npcs with nms but when i add the plugin to the server it doesnt work

tawdry echo
#

i wrote about it

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!

river oracle
#

?nocode

undone axleBOT
#

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

river oracle
#

?paste

undone axleBOT
abstract sorrel
#

so i put the code in the paste and send u the link

river oracle
#

yuh

abstract sorrel
river oracle
#

nice

#

what about it

abstract sorrel
#

it doesnt work when i run the command

river oracle
#

?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.

tall dragon
#

y2k utilizing every command at his disposal over here

#

😄

abstract sorrel
#

when i run the command /npc i expect it to spawn a player but when i run the command it says "An internal error occurred"

tall dragon
#

which means u must have a stacktrace

abstract sorrel
#

so is the stacktrace the thing that is pasted into the console when the error occurs?

river oracle
#

you should probably learn java. especially before you work with NMS

#

which is not doccumented

abstract sorrel
#

wait a sec it says the plugin is disabled never mind thats useless

river oracle
#

your not remapping

#

?nms

river oracle
#

also the way your doing your NMS isn't very maintainable

#

for version upgrades

#

you need to abstract everything into interfaces and different working modules

abstract sorrel
#

i don't mind that for now if i ever publish the plugin i will look into it

eternal oxide
#

You really are jumping in at the deep end for your first plugin

river oracle
abstract sorrel
#

also how do i remap there is nothing in the link you sent about remapping

river oracle
#

you just didn't read then I guess

#

that resource is everything you need to use mojmaps

#

I know its hard but you gotta read the whole thing

abstract sorrel
#

i read it but all i see is a pom.xml file and nothing at all about how to remap

river oracle
#

would you prefer me to use the less understandable term

eternal oxide
#

that pom contains everything to remap

river oracle
#

reobfuscate

#

you need to reobfuscate your NMS code

#

to the default reobfuscated names

abstract sorrel
#

how would i do that

river oracle
#

?nms

abstract sorrel
#

so do i just change the <goal>shade</goal> to <goal>remap</goal>

eternal oxide
#

no, read the page

river oracle
#

good luck ElgarL byyyyyy

abstract sorrel
#

I READ THE PAGE BUT I DON'T GET WHERE IT TELLS YOU HOW TO REMAP

eternal oxide
#

you clearly didn't

river oracle
#

dude you should not be working with NMS

eternal oxide
#

You skimed it and saw a pom

river oracle
#

start with easier stuff please

abstract sorrel
#

ok so do i change all the things in my pom.xml to the things in that pom.xml

#

except groupid and etc

eternal oxide
#

no

abstract sorrel
#

THEN HOW DO I DO IT

eternal oxide
#

read ALL of that post. everything thats inside the box

#

even the bit of text that is below the pom

river oracle
#

Reading is so hard

#

do you really expect them to do that

tall dragon
#

no need for yelling PepeLaugh

river oracle
#

how harsh

river oracle
remote swallow
#

DO YOUR EARS STILL HURT

winged anvil
eternal oxide
#

you base it off what they want you to do firstly

river oracle
eternal oxide
#

be sure you get a FULL spec for the project and negotiate the price. No changes after it's finalized.

river oracle
#

also don't let them just add stuff without paying more yeah what he said

round finch
#

Hyper sensitivity?

abstract sorrel
#

finally i got it to compile correctly

#

thank you for the help

#

now lets see if it works

#

also sorry for the caps

sterile token
#

How do you create parent of parents in Maven? Im really struggling with it

river oracle
#

Oh Verano I actually needed you brother

river oracle
sterile token
#

haha

#

Lets go dms

winged anvil
#

so if they want anything added, add it and after everything they want is added then negotiate

eternal oxide
#

people will often tell you what they want, then slowly alter it as time goes on.

#

oh I forget we want x in there too

young knoll
#

Oh I forgot in addition to 1.19 it should also run on beta 1.5

eternal oxide
#

Just get the full spec in writing and make it absolutely clear the price is for that spec. anything else you negotiate after.

winged anvil
#

alright thank you i appreciate it

eternal oxide
#

Once you have the spec you should be in a better position to work out what you need to charge

winged anvil
#

i feel like the whole ordeal COULD go for some thousands ngl but at the same time i have no experience

abstract sorrel
#

does anyone know why this is happening:

[SuperiorNPCs] Enabling SuperiorNPCs v${project.version}
rough ibex
#

did you literally include ${project.version} in your source code

abstract sorrel
#

?paste

undone axleBOT
abstract sorrel
kind hatch
#

Cause you're not filtering resources.

abstract sorrel
#

how do i do that

kind hatch
#
<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>
abstract sorrel
#

ok

young knoll
#

Spigot should enforce semver

#

Smh

abstract sorrel
#

where would i put that in the pom.xml because if i add it just before the </project> it errors

kind hatch
#

It goes under your <build> section

abstract sorrel
#

ok

river oracle
kind hatch
#

Semantic Versioning

river oracle
#

what is that?

hazy parrot
#

major.minor.patch

#

v1.0.2 for example

young knoll
#

Currently the version field is just a string

#

So you could have version banana

hazy parrot
#

well what could it be besides string for semver

river oracle
#

I see

kind hatch
#

Semver does have it's problems though.

#

It's rules are just about the numbers, but if you want anything else, like marking it with -ALPHA or smth similar it's not technically following the standard.

young knoll
#

I guess

rough ibex
#

"A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. Identifiers MUST comprise only ASCII alphanumerics and hyphens [0-9A-Za-z-]. Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes. Pre-release versions have a lower precedence than the associated normal version. A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92, 1.0.0-x-y-z."

#

Is this not that?

young knoll
kind hatch
rough ibex
#

1.0.0 did have a similar rule but also required wanted a number after

#

Precedence SHOULD be determined by lexicographic ASCII sort order.

next plume
#

1.0.0-latest-fix.2-release

bitter mural
#

Hello, all! Is there a tried-and-true plugin for spawning in fake players for testing? There are seemingly dozens of plugins that claim to do so, but a lot of them aren't well-documented and most don't work on the latest versions of minecraft. Do you have ones that you use? Or should I just scrap that idea and use MockBukkit?

young knoll
round finch
#

Mine turtle 🐢

willow widget
young knoll
#

The text yes

#

But not what they do

willow widget
#

damn

#

i want to change what they do

#

basically just disable the purchase button lol

tribal quarry
#

how to load 1.19.x nms on gradle? 🔥

remote swallow
#

remapped?

tribal quarry
#

yes

remote swallow
#

paperweight userdev

tribal quarry
#

any explanation?

#

is this a gradle plugin or something?

remote swallow
#

one sec

#

plugins {
    id 'java'
    id 'io.papermc.paperweight.userdev' version '1.5.4'
}

dependencies {
    paperweightDevelopmentBundle('io.papermc.paper:dev-bundle:1.19.4-R0.1-SNAPSHOT')
}
eternal oxide
#

Spigot has no gradle support for NMS

#

Maven only

remote swallow
#

if you do use paperweight just keep an eye for and paper imports

remote swallow
#

if you use them wont work on spigot

rotund lotus
#

hey, if I have a location and a direction as a vector, and I want to get the location x blocks in that direction (of the vector), how do I do that?

eternal oxide
#

location.add(vector.multiply(distance))

#

if it's a unit vector

rotund lotus
#

thanks (:

idle iron
#

Anyone know if its possible to remove Skeleton Arrow Cooldown?

fluid river
idle iron
flint coyote
#

Machinegun skeleton?

idle iron
#

Something like a 0.5-second delay

vocal cloud
#

You'd need a custom entity I'd imagine

quaint mantle
#

Does anyone Know how do imake npcs using nms all of the tutorials i found dont work

#

for my version

#

(1.19.3

idle iron
solar mauve
#

does anybody knows how to modify offline player's inventory? (im going to use loadPlayer trick by loading the player and construct it, and calling loadData() function then get the inventory) is it okay? or??

flint coyote
#

No it is certainly not. There is no channel for advertisements on this discord. This channel is for development help only

raw sky
#

my bad, never my intention to advertise was sending the link to showcase the homepage with the pictures and text we chose

raw sky
#

ty!

flint coyote
flint coyote
idle iron
#

I will try thank you

flint coyote
#
((RangedAttackMob)this.mob).performRangedAttack(var0, BowItem.getPowerForTime(var5));
this.attackTime = this.attackIntervalMin;

looks like after firing their arrow this is set back to the given time and therefore it seems to be the cooldown

solar mauve
#

nvm

river oracle
#

use this to figure it out

#

you can search through many mapping types and find what the values are in each

#

if you are used to Spigot or Yarn Mappings make sure you choose those accordingly

floral drum
river oracle
floral drum
#

I love you!!

flint coyote
#

I'll book you guys a room 🤔

river oracle
#

no thanks I'm already taken

#

somehow, considering I'm a developer

flint coyote
#

As a developer you are always in love anyway, with your code that is

remote swallow
#

are you secretly not a dev and you make chat gpt code for you

floral drum
#

I meant as a friend fabsi!!

#

I'm taken too

young knoll
river oracle
young knoll
river oracle
#

// PLEASE DON"T UNCOMMENT THIS

#

everywhere

flint coyote
floral drum
#

..

#

I hate leaving comments!

#

Who else?

flint coyote
#

You guys are leaving comments?

floral drum
#

(Only if it's a very un-decipherable method)

eternal oxide
#

comments everywhere. every line

floral drum
#

kms

#

// BLANK LINE

#

💀

#

I've always liked elgar

vocal cloud
#

Comment to explain your comments

flint coyote
floral drum
#

useless code with a useless comment

#

so based

idle iron
river oracle
flint coyote
floral drum
#

😭

#

but in all seriousness, who actually leaves comments?

river oracle
#

Me when I need to vent anger with my code

floral drum
#

Either have a descriptive but short name for your method or just make it easy to read lmfao

flint coyote
river oracle
#

for example

// fuck paper
@SupressWarnings("deprecated")

GameManager.getPlayerManager(); // Holy fuck I need to redo this why the fuck is this all static whoever wrote this is stupid
#

from my job

#

btw

floral drum
#

oh god

#

I hate paper deprecated adventure warnings

#

you know what I meann

river oracle
#

when I worked for that server I wrote a whole game engine 😭 cuz the last people didn't know how to not abuse static

flint coyote
#

Or the obligatory TODO comments when you are to lazy to do it now and then forget about it for ages

    public String getDocumentation() { // TODO
        return "This is temporary and should be abstract and in every event with its own documentation";
    }
idle iron
# flint coyote Lemme see

I have no idea where to start. I am trying to make every skeleton have a shorter shooting delay of 0.5 seconds.

floral drum
#

💀

flint coyote
#

But at work my favorite type of comment is one that describes a function - a function that was changed years ago and nobody ever bothered updating the comment. Even better when the comment got updated with // TODO adjust comment to reflect changes to function

floral drum
#

💀

flint coyote
idle iron
flint coyote
#

Nop there's no way

idle iron
#

Ok thank I will try reading about nms

flint coyote
#

I think I watched this back in the day when I made an angry flying pig
https://www.youtube.com/watch?v=Fnonn5chXk4

Custom pathfinder goals is here! I went very in-depth the best way I could to explain how custom pathfinders work. I hope you all enjoy and understand the video :D Thanks for watching!

P.S
Sorry about the damn zombie noise in the background forgot I had my mc sound on :(

Want more videos?
Become a Patreon support to gain access to more videos!...

▶ Play video
floral drum
young knoll
#

Did the bee just eat part of the world

#

Or was that you

floral drum
#

me

#

pets are cute when they bob up and down :D

#

and when they are packet-based

young knoll
#

We almost had custom pathfinder goals

#

😩

floral drum
#

I should drink rum

young knoll
#

Okay jack sparrow

remote swallow
worldly ingot
#

It's difficult to implement support for vanilla goals, which is what most people would probably use them for

young knoll
#

Big boy factory class

remote swallow
#

ah

idle iron
remote swallow
#

CraftCraftEvilFactory

floral drum
flint coyote
young knoll
#

I mean how many of the vanilla goals would people actually want

floral drum
#

💀

young knoll
#

Who is gonna use the bee goals

river oracle
#

and the classes weren't even named properly

flint coyote
floral drum
#

that's actually horrible

river oracle
#

there was this GameManager class that need Game class to work

#

which makes no sense

floral drum
#

tf?

river oracle
#

yes

#

I shit you not