#help-development

1 messages · Page 90 of 1

tender shard
sterile token
#

onEnable() != OnEnable()

tardy delta
#

public void methodThatTakesAnIntAndReturnsTheSameIntJustToTrollYou(int i ) { return i; }

flint coyote
#

wtf

#

I expected long class names, not instance names

fierce ore
#

hi im currently tying to make a plugin lets one user sleep through the night on a server. i have the PlayerBedEnterEvent and it calls a runTaskLater to wait a few seconds before setting the time to day. How can i set the time of the server within the runTaskLater?

sterile token
#

How do i run a custom event async non related Spigot question? Its more a java question

tardy delta
#

what about Player#setSleepingIngored

fierce ore
flint coyote
tardy delta
#

idk you might be able to use that method

flint coyote
#

if so there's a gamerule and you don't need a plugin at all

fierce ore
#

i just want one person to be able to sleep in a bed to then skip the night

#

i wanna do it through a plugin

tardy delta
#

theres a gamerule for the amount of players that have to sleep before passing to day afaik

flint coyote
#

Ok then

#

ye there is but he said he wants a plugin

hazy parrot
#

why make a plugin for something that already exist in vanilla 🤔

fierce ore
#

because its a challenge

flint coyote
#

there's better challenges^^

fierce ore
#

how can i access the time to change it from within a Bukkit.getScheduler().runTaskLater()?

sly surge
#
Bukkit.dispatchCommand(console, "/gamerule playersSleepingPercentage 1);
flint coyote
fierce ore
#

no the time of the server

hazy parrot
#

that make a counter, increment it when PlayerBedEnterEvent happens and decrement it when PlayerBadLeaveEvent happens

#

i mean its basically reinventing a wheel but alright ¯_(ツ)_/¯

flint coyote
lost matrix
fierce ore
#

couldve skipped the judging me for what im trying to do part tho

ashen quest
#

how do i calculate the amount of armor points a player has (armor points = the armor icons above hearts)

flint coyote
#

I wasn't judging you. Atleast that wasn't my intention. I thought you might not know about the gamerule. And when you said you wanted a challenge I just thought it would be better to do something "more meaningful" as in "not already there by default"

lost matrix
ashen quest
#

How.

lost matrix
#

Its an attribute

lost matrix
ashen quest
#

.getAttribute isnt a thing in 1.8 💀 (ik i shouldnt use 1.8 but its work stuff, i dont decide what hppns)

flint coyote
#

ouch

ashen quest
#

?1.8

undone axleBOT
lost matrix
#

Well then update to a version that is still supported. 1.8 is ancient.

sterile token
#

You are not alone mate

ashen quest
#
  • understand my pain, i debug NPEs that are so shit, i miss 1.14 NPE update.
sterile token
#

Maybe if you want you can explain me via dm

ashen quest
#

like where i work?

flint coyote
#

Do you get an extra compensation for pain an suffering when working with 1.8? 💀

ashen quest
#

nope but gotta get the bag

flint coyote
#

also idk what 1.14 changed about them

sterile token
crimson scarab
#
    @EventHandler
    public void onEntitySpawn(EntitySpawnEvent event) {
        if (!(event.getEntity() instanceof LivingEntity) || (!(event.getEntity() instanceof Ageable))) return;

        Ageable ageable = (Ageable) event.getEntity();
        ageable.setAdult();
    }

    @EventHandler
    public void onEggHitEvent(PlayerEggThrowEvent event) {
        if (event.getEgg().getPersistentDataContainer().has(EntityKey, PersistentDataType.STRING)) {
            String entityString = event.getEgg().getPersistentDataContainer().get(EntityKey, PersistentDataType.STRING);
            entityString = (Objects.equals(entityString, "MOOSHROOM") ? entityString = "MUSHROOM_COW" : entityString);

            event.setHatchingType(EntityType.valueOf(entityString));
            event.setHatching(true);
            event.setNumHatches((byte) 1);
        }

    }


    @EventHandler
    public void onThrowEgg(PlayerInteractEvent event) {
        PlayerInventory inventory = event.getPlayer().getInventory();

        if ((!event.getPlayer().getInventory().getItemInMainHand().getType().toString().endsWith("SPAWN_EGG"))) return;
        if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_AIR) return;
        if (inventory.getItemInMainHand().getType() == null) return;


        Entity entity = event.getPlayer().launchProjectile(Egg.class);
        Egg egg = (Egg) entity;
        egg.setItem(inventory.getItemInMainHand());
        entity.getPersistentDataContainer().set(EntityKey, PersistentDataType.STRING, inventory.getItemInMainHand().getType().toString().substring(0, inventory.getItemInMainHand().getType().toString().length()-10));

    }
#

can you fellows judge my code

undone axleBOT
ashen quest
tardy delta
#

!a || !b isnt that the same as !(a && b)

sterile token
ashen quest
sterile token
#

I mean i dont know which spigot api i need to use

#

😬

tardy delta
#

1.8 iig?

sterile token
#

1.8 works on 1.19?

#

I dont think so

tardy delta
#

uhh you want have access to most things

tight tinsel
#

Hello, exists any guide for the firsts steps creating plugins?

flint coyote
flint coyote
tight tinsel
#

Yes, exists more possible languages to make plugins?

ashen quest
#

u can make plugins using kotlin and java

tight tinsel
agile anvil
grim ice
#

im gonna make an api

#

like

#

NotEnoughEvents

#

thats what im gonna call it probably

grim ice
#

it has all the events that spigot didnt implement yet

#

any recommendations?

shadow night
#

how do I use my config from another class?

hazy parrot
#

dep injection or singleton pattern, doesn't matter

#

take a note there is #getPlugin(class) method

lost matrix
lost matrix
# grim ice any recommendations?

An event which is fired when the player opens his own inventory.
I had an idea that used achievements for this. Never actually tried it.

grim ice
#

alright

lost matrix
#

PlayerArmorEquipEvent

grim ice
#

PlayerInventoryOpenedByPlayerEvent

#

and that

#

yes

young knoll
#

There’s a draft PR for that

#

Maybe one day

shadow night
grim ice
#

alright events now

young knoll
#

EventEvent

grim ice
#

5

#

not because of coll's

#

its armor unequip

#

ok 7 now

#

8 now

#

these are what i have rn

#

just added another one

agile anvil
# grim ice these are what i have rn

For the post process why not wait a tick,
Why is there a need to check player inventory update ?
PlayerLocationChange = PlayerMoveEvent
PlayerFaceDirectionChange = PlayerMoveEvent

smoky oak
#

im trying to do nms
Could not find artifact org.spigotmc:spigot:jar:1.19-R0.1-SNAPSHOT in spigot-repo

agile anvil
#

Did you run buildtools ?

kindred valley
#

Walter, put your dick away walter

#

Imna having sex with you right now walter

smoky oak
#

yes

grim ice
tropic ingot
#

Good evening, I would like to have my plugin send the player a chat message that uses hexadecimal codes (like # B399CC), what can I do? Because at the moment I can only use ChatColor. (COLOR) + "message".

smoky oak
#

cant u just stuff a hex into color

agile anvil
young knoll
#

ChatColor.of

agile anvil
desert frigate
#
player.canSee(entity)``` i spawned the mob behind me but why does it still return true?
young knoll
#

Because that’s not what it does

#

It’s for use with hideEntity

tropic ingot
smoky oak
#

that wont work for multiple reasons

agile anvil
undone axleBOT
young knoll
#

It’s not in that one

#

?jd-bcc

smoky oak
#

anyways

#

why cant i use nms?

young knoll
#

Did you run buildtools

desert frigate
smoky oak
#

again, yes, i did

desert frigate
#

how would i do that?

#

no clue what ray traycing is

smoky oak
#

its a method that draws a line between two locations

#

i think its used to tell if somethings in the way

agile anvil
#

^

smoky oak
#

anyways

#

my m2 folder does have the 1.19.2 remapped files

#

so why cant i use them in maven

lost matrix
#

Did you try not being a cringe vampire for once?

lost matrix
lost matrix
ancient plank
#

vampire moment

smoky oak
#

?paste

undone axleBOT
smoky oak
#

heres the important part

#

heres full pom

lost matrix
smoky oak
#

wasnt aware that was there

young knoll
#

All of them

grim ice
smoky oak
#

didnt fix anything tho

grim ice
#

um you should probably

#

learn java

smoky oak
#

org.spigotmc:spigot:jar:remapped-mojang:1.19-R0.1-SNAPSHOT was not found in https://hub.spigotmc.org/nexus/content/repositories/snapshots/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of spigot-repo has elapsed or updates are forced

lost matrix
smoky oak
#

so youre saying replacing it with 1.19.2 would work

#

well new issue

#

wheres the biome fog gone

young knoll
#

The what

smoky oak
#

Biome.L() ?

young knoll
#

You are using remapped

#

So it should have a real name

smoky oak
#

at least that what it was in non remapped half a year ago

#

the issue is

#

its not showing me an import option

#

so im asking where it is to type in manually

young knoll
#

Decompile biome and look

lost matrix
#

Those are the biome statics

shadow night
#

does player.getWorld() return the world in main (like no matter in which dimension, just the world) or the specific world like nether end or overworld

fallen thunder
#

Hi i have a pb with cancelling droped item when a player die. Is it good ?:

 p.getInventory().clear();

        for (ItemStack stack : e.getDrops()) {
            stack.setType(Material.AIR);
            e.getDrops().remove(stack);
        }
lost matrix
young knoll
#

Dimensions are just worlds

shadow night
#

hmm makes sense

twilit roost
#
Location centerUpperLeftQuarter = new Location(w,0.25*center.getX(),center.getY(),0.75*center.getZ());
Location centerUpperRightQuarter = new Location(w,0.75*center.getX(),center.getY(),0.75*center.getZ());
Location centerLowerRightQuarter = new Location(w,0.75*center.getX(),center.getY(),0.25*center.getZ());
Location centerLowerLeftQuarter = new Location(w,0.25*center.getX(),center.getY(),0.25*center.getZ());

This should return Corner positions of WorldBorder
But it doesn't return them correctly

night copper
#

try it out

agile anvil
lost matrix
#

No the multiplication makes no sense in the first place

agile anvil
#

0 < a * b < b if 0< a < 1

lost matrix
twilit roost
#

wait sheet I send wrong snippet

Location center = border.getCenter();
double distanceFromSideToCenter = border.getSize()/2;

Location upperLeftCorner = center.clone().subtract(distanceFromSideToCenter*2,0,0).add(0,0,distanceFromSideToCenter*2);
Location upperRightCorner = center.clone().add(distanceFromSideToCenter*2,0,distanceFromSideToCenter*2);
Location lowerLeftCorner = center.clone().subtract(distanceFromSideToCenter*2,0,distanceFromSideToCenter*2);
Location lowerRightCorner = center.clone().add(distanceFromSideToCenter*2,0,0).subtract(0,0,distanceFromSideToCenter*2);

lost matrix
shadow night
#

how do I check what dimension a world is?

smoky oak
#

urgh wth is this
getBiome returns a level reader

#

how do i get the biome from that

lost matrix
shadow night
#

hmm

#

thanks

smoky oak
#

ah its value

#

whys that interface there anyways

agile anvil
twilit roost
#

I was first testing it without * 2
but it also didn't work

Then I tried * 2 but also didn't work

#

Campfires mark those positions

#

this is without *2

agile anvil
#

Should be good

#

Mathematically speaking

shadow night
#

can anybody tell me what I can write instead of that and if this is bad

hazy parrot
#

Anyway plugin var could be private

shadow night
#

ig ¯_(ツ)_/¯

faint frost
#

xp 💀

shadow night
twilit roost
shadow night
#

I was thinking why my plugin wasn't working when I forgot to add saveConfig lol

#

wait, is WorldLoadEvent static?

waxen plinth
#

What would that even mean

shadow night
#

idk I remember forge split static and non-static events or something like that

waxen plinth
#

Sync and async?

#

Otherwise I don't know what you mean

shadow night
#

I'm not sure myself tbh

#

ig problem solved cuz idk the problem

#

ez

stark stag
#

Hello, I am trying to format the chat messages on my server so that they do not include the chevrons "<" and ">" around the player names. I was able to do this by calling AsyncPlayerChatEvent.setFormat("%s %s") but now my chat messages are showing a "?" after the message and when I hover the message it shows a popup that says "This message has been modified by the server"

#

Does anyone know how to get rid of this popup?

smoky oak
#

you cant get rid of that popup

#

blame microsoft

stark stag
#

It seems that other 1.19 servers are able to remove the chevrons without showing that popup

smoky oak
#

really

#

huh

waxen plinth
#

Via preview

smoky oak
#

whats that

desert frigate
#

still no idea how to use it but ill search

shadow night
#

so I have this code but I checked the console and there's nothing

    @EventHandler
    public void onWorldLoad(WorldLoadEvent event) {
        plugin.logger.info("WorldLoadEvent executed");
    }```
smoky oak
#

its getLogger().info(msg)

shadow night
#

but the .logger is just a variable with .getLogger()

reef lagoon
#

and make sure it's registered

shadow night
reef lagoon
#

Ye

shadow night
#

hmm

#

it still doesn't log anything

smoky oak
#

post code

#

?paste

undone axleBOT
shadow night
smoky oak
#

the code with the event and the code where you register it

stark stag
#
@EventHandler
    public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) {
        event.setFormat("%s %s");
    }

    @EventHandler
    public void onAsyncPlayerChatPreviewEvent(AsyncPlayerChatPreviewEvent event) {
        event.setFormat("%s %s");
    }
smoky oak
#

does your onEnable log properly

shadow night
#

yes, the other events seem to be working

smoky oak
#

doh

#

your plugin loads after the world loads you know that right?

shadow night
#

wait

#

WAIT

smoky oak
#

if you want it to load BEFORE world load add this to your yml

shadow night
#

I forgot to change the order

smoky oak
#

load: STARTUP

shadow night
#

I completely forgot about that

hasty prawn
#

Just do the Preview one

#

Nevermind I lied

shadow night
agile anvil
smoky oak
#

have you checked if you get a value properly read out from the config

#

just print it to console

#

considering you spawned nearly exactly on z=0 it mighve just spat out the default zero

#

okay so i know im asking this every 2 months but which file is the reobfuscated one again

#

remapped or remapped-obf

stark stag
# hasty prawn Nevermind I lied

Thank you for the response! I thought that too at first, but it seems like both are needed. I just don't understand why it says "This message has been modified by the server"

smoky oak
#

cuz u cant chat report modified messages cuz they might be from the server

#

as i said

#

blame microsoft

hasty prawn
#

It's definitely a weird system, I'm sure there's something out there you can read up on more about how it works. I'm sure once you know what it's doing, you can figure out how to get around it.

#

Spigot might have a thread on it somewhere. I just dont know where.

stark stag
#

I blame Microsoft, but I still think there is a way around it because other servers don't have this issue

desert frigate
#

stupid question but what color is this? i tried every color code/ ChatColor and cant find it

desert frigate
#

&7 is this

#

but that is darker gray-

#

what-

#

oh

#

thats light gray

#

yeah

#

ig

ancient plank
#

what world u living in where 8 is light gray

stark stag
desert frigate
#

nah i saw it on hypixel

#

lol

stark stag
#

Is there any way to change the format of chat messages without marking messages as "modified by the server"?

desert frigate
#

yes

#
if (action.equals(Action.RIGHT_CLICK_AIR) || action.equals(Action.RIGHT_CLICK_BLOCK)) {``` its only working when i right click a block and not when i right click air
eternal oxide
#

No event fires for empty hand right clicking air

desert frigate
#

its not empty hand tho

#

check if clicked block is null?

#

no cause im making a custom item

#

when they right click it

#

yeah thats what im doing

#
public void playerInteractEvent(org.bukkit.event.player.PlayerInteractEvent event) {
        if(event.isCancelled()) return;
        Block block = event.getClickedBlock();
        Action action = event.getAction();
        ItemStack item = event.getItem();
        Player player = event.getPlayer();
        World world = player.getWorld();
            if (action.equals(Action.RIGHT_CLICK_AIR) || action.equals(Action.RIGHT_CLICK_BLOCK) || block == null) {
            if (InferiorDragonSlayer.isItem(item)) {```
shadow skiff
#

don't mind this next part, just needa screenshot of da bot

#

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

shadow skiff
#

kewl

eternal oxide
#

if(event.isCancelled()) return;This is exiting the event

#

right click air with anything the event fires in a cancelled state

rough drift
#

Is it acceptable for a one-event plugin to have it's event in the main class?

#

(so just a miniscule under 500 bytes plugin sort of deal)

tall dragon
#

personal preference

#

i personally would not

#

but i guess its acceptable

rough drift
#

No I meant

#

Everything together is like 3,79KB

#

don't wanna make it 4-5kb just for a util I'll use

#

I know...?

#

I just like small sizes lmao

#

I normally make a PlayerConnectionListener, a BlockBreakListener etc

fiery prairie
#

hi, so basically this says Success when i do /im name something but doesnt rename the item, any idea why?

rough drift
#

never made one file plugins

rough drift
#
ItemMeta meta = item.getItemMeta();
// stuff
item.setItemMeta(meta);
fiery prairie
#

oh yea thanks

quaint mantle
#

does anyone know how to get a list of materials that have colliders

eternal oxide
#

isBlock/isSolid I think

quaint mantle
#

or the opposite, to get blocks that you cannot collide with

quaint mantle
fiery prairie
#

issolid probably yeah

#

isblock probably too

quaint mantle
#

alright going to test

#

thanks

#

works, thank you

agile anvil
#

Looks like a mod or a custom resource pack

crimson scarab
#

can you give a pdc to a entity spawned from an egg

agile anvil
eternal oxide
#

cancel the egg hit event and spawn the entity yourself, then you can apply the PDC easily

crimson scarab
#

alright i will do that

outer river
#

hello, is the better way to use method of class "A" in class a class "B" is to create an instance of class "A" in class "B" or just do in the class B : A.methodIWantToUse ?

compact crane
#

Hi, I just have the problem that the test message is never output. I want to add in my plugin the possibility to load addOns. The jars are detected in the upper for loop. I suspect that the problem is in line 13. Does anyone know what the problem is? In the addOn is a folder Meta-Info with the Plugin.properties.
https://pastebin.com/Sn13NJXC

agile anvil
# outer river hello, is the better way to use method of class "A" in class a class "B" is to c...

You'll have to choose the way you want. It all depends on how you want to use it and how the class is supposed to act.
Java is very very object oriented, so the main usage would be:
GRAB the instance of the object (do not create it each time, use the one you need), and call the method from the instance.

But if you want to have like a Utility class that only bring a static simple method which don't use memory make your methods static so you can Class.coolMethod()

compact crane
#

No

agile anvil
# compact crane No

Can you please surround your call to the method with a try catch and print the exception ?

#

The call to loadPlugins()

compact crane
#

This is my LoadCode:

try {
loadPlugins();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}

agile anvil
#

For debugging purpose, temporarily do:
Try {
LoadPlugins();
} Catch(Exception e) {
e.printStackTrace();
}

#

(sorry written on android)

outer river
patent fox
#

how can i change the sky's color? im pretty sure its packets

patent fox
#

what is the packet's name?

smoky oak
#

thats not a packet

patent fox
#

oh

smoky oak
#

well its a packed if you want to pretent only to one player

#

method im thinking of does it for all players

patent fox
#

can you show me an exmaple?

smoky oak
#

not one that works

patent fox
#

ok

#

but general idea of how

#

if not packets

#

than how?

smoky oak
#

get the world and the biome. that biome has a field, dunno the name, that has the colors of stuff like grass, leaves and sky. change the color of that

#

you probably need nms for that

round finch
#

you can also change water color

smoky oak
#

shhh

#

uuuuh

#

java.lang.NoSuchMethodError: 'hc net.minecraft.server.level.WorldServer.w(net.minecraft.core.BlockPosition)'

#

did i just copy the wrong file?

patent fox
smoky oak
#

im trying to figure it out myself

#

i told you what i know

agile anvil
smoky oak
#

i hate obfuscation

#

'L'

#

yea sure just insult me while youre at it too

#

urgh

agile anvil
grim ice
agile anvil
#

Indeed you'll have to manipulate a chunk and send a chunk update packet

#

same way 🙂

#

Change the biome color!

#

#1.16 or 17 joy

#

In fact you can change:

  • sky color
  • foliage color
  • water color
  • water fog color
  • grass color
  • fog color
#

You can with NMS edit the biome colors

#

There are some fields for it

smoky oak
#

the real issue is

#

once you edited the field how do you get them back into biome

#

the fields are all private

agile anvil
#

You'll have to set a new custom biome

#

you can't edit the existing one

smoky oak
#

i found that much but how can i actually set a biome

sterile token
#

Any opinions about my sneaky coding

smoky oak
#

i hate generics so you really shouldnt ask me

hasty prawn
lost matrix
#

Also Jedis is the worst redis library

#

And you should use a codec instead of having everything doubly en/decoded to/from a string

gray merlin
#

Does someone have an implementation of an ItemStack list compression method? It would be bothersome to write it, if something of the sorts already exists.

lost matrix
gray merlin
#

Rephrase that, please?

lost matrix
#

I am assuming that you want to serialize a List<ItemStack> to a String and store it somewhere.
My question aimed on finding out where you want to store this list.

gray merlin
#

Oh, no. I meant compressing the ItemStacks inside the list. I.A, if the list has two ItemStack(Material.STONE, 32), it would compress them down to an ItemStack(Material.STONE, 64)

echo basalt
lost matrix
#

Ah i see. I might have a utility method for that.

gray merlin
lost matrix
#

Nope didnt find one

#

Shouldnt be too hard to implement

gray merlin
#

Ah, that's alright. Thank you anyways!

lost matrix
#

Im thinking of an algorithm that isnt horrible. But the fact that hashCode cant be used because isSimilar has
to be called, makes this a pretty cpu intensive one.

ivory sleet
#

if a super type which was immutable of ItemStack just existed 😐

lost matrix
#

This is O(n^2)

  public List<ItemStack> compress(List<ItemStack> list) {
    List<ItemStack> compressed = new ArrayList<>();
    list.forEach(item -> insert(compressed, item));
    return compressed;
  }

  private void insert(List<ItemStack> list, ItemStack itemStack) {
    for (ItemStack current : list) {
      if (!current.isSimilar(itemStack)) {
        continue;
      }
      if (merge(current, itemStack)) {
        return;
      }
    }
    list.add(itemStack);
  }

  private boolean merge(ItemStack target, ItemStack donator) {
    int max = target.getMaxStackSize();
    int space = max - target.getAmount();
    int donated = donator.getAmount();
    if(space >= donated) {
      target.setAmount(target.getAmount() + donated);
      donator.setAmount(0);
      return true;
    }
    int delta = donated - space;
    target.setAmount(max);
    donator.setAmount(delta);
    return false;
  }
#

You can also be a bit sneaky and try this 5471_pepepog

  public List<ItemStack> sneakyCompress(List<ItemStack> list) {
    Inventory inventory = Bukkit.createInventory(null, 6 * 9);
    list.forEach(inventory::addItem);
    List<ItemStack> compressed = new ArrayList<>();
    for(ItemStack itemStack : inventory) {
      if(itemStack == null) {
        break;
      }
      compressed.add(itemStack);
    }
    return compressed;
  }
#

And if you dont care about performance on top of that

  public List<ItemStack> sneakyCompress(List<ItemStack> list) {
    Inventory inventory = Bukkit.createInventory(null, 6 * 9);
    list.forEach(inventory::addItem);
    return Arrays.stream(inventory.getContents()).filter(Objects::nonNull).toList();
  }
#

@gray merlin Mind trying those 3 approaches for me?

gray merlin
#

Will do, one second.

smoky oak
#

wtf 7smile

#

just iterate over every itemstac once

#

keep track of the item total

#

then generate the proper amount of item stacks

atomic swift
#

im trying to use this idk how to get the world from the cfg
Location loc = new Location(World, Double, Double, Double)

smoky oak
#

O(n)

gray merlin
# smoky oak then generate the proper amount of item stacks

The first one works flawlessly: The increasing time is a very small issue, but it's almost instant on compressing a player's inventory.

However, this does make a lot of sense, and I hadn't thought about it. I'll write that one, since, I mean, It's O(n). That was a very good idea, moterius

smoky oak
#

something along the lines of

HashMap<Material, Integer> itemmap;
public List<ItemStack> compress(List<ItemStack> list){
  //init map
  for(ItemStack i : list)
    itemmap.put(i.getMaterial, itemmap.get(i.getMaterial,0)+i.getcount);
  for(Material m : itemmap.getKeys())
    //etc
}
#

keep in mind to not accidentally compress unique items though

#

might need a check for that

#

maybe use a hashset or smth to prevent that

gray merlin
#

We can get the max stack size for an item so that probably won't be an issue

lost matrix
smoky oak
#

most itemstacks are only a material and a number

#

thats why i said to check for uniqueness

#

usually you can ignore those and just compress the rest

#

because those unique items are either unstackable - enchanted gear - or really rare, which usually would be something renamed

#

alternatively for approx O(n log n), keep two lists, one of non-full stacks and one of full. iterate over the non full list with the new item, add it, and if it exceeds max stack number add it to the full list, and the remainder to the non full one

lost matrix
#

Sounds like a lot of unnecessary logic to me.

lost matrix
sour wedge
smoky oak
#

hm i see

#

im unsure if keeping a separate list would be faster

#

i dont actually know the heap sizes and performance impact of collections very well

#

like

#

theoretically or for massive amounts probably yes

#

but not for like 54 itemstacks

sour wedge
#

Use Spark

#

than you dont need make heapDumps

desert frigate
#
void damage(double amount,
@Nullable
Entity source)```
Will the killer be the source?
smoky oak
#

probably

#

test it

desert frigate
#

is it possible to use a weapon to damage a entity

smoky oak
#

hit it

desert frigate
#

like a ItemStack

#

bruh

smoky oak
#

theres probably a damage method for that but im not 100% certain

desert frigate
#

I couldn't find any methods for it

sour wedge
#

void damage​(double amount, Entity source)
Deals the given amount of damage to this entity, from a specified entity.

#

Than you can damage a entity over a OnDamageEntityEvent

desert frigate
#

Yeah

sour wedge
#

not sure whats Event is

desert frigate
#

but u can't calculate the damage from a item right?

sour wedge
#

PlayerItemDamageEvent ?

#

oh thats only for a item

young knoll
#

You cannot

#

Of course weapon damage is fairly simple to work out yourself

desert frigate
#

yeah

#

but it's very tedious

#

plus there is Block#breakNatrually(ItemStack item) so I thought there would be one for this too

#

well if there isn't, is there a way to force a player to hit a entity using a Item?

ancient plank
#

Is it really tedious tho

young knoll
#

I’m sure NMS can handle it

ancient plank
#

It's simple math

desert frigate
#

yeah that's why

#

I didn't want to do that

sour wedge
desert frigate
sour wedge
#

A other question, can a Config.yml key be in used by a progress. so it will block edit them? with getConfig.set()

#

It seems like its only on a specific key, not all of them can't be edited just one so far.

hazy parrot
#

Be what

gray merlin
#

@lost matrix @smoky oak
https://pastecode.io/s/nt5n3yib
I have finished the implementation. This handles uniqueness, and is O(n), using @smoky oak's idea, and some of @lost matrix's reasoning.

sour wedge
#
settings:
  global:
    spawner:
      spawnrate-percentage: 80
      spawnrate-delay: 5
      spawn-max-entities: 4
      stack-size: 64
      spawn-distance: 64
      distance: 64
  skyblock:
    save-interval: 300

Only settings.global.spawner.distance can't be writen

smoky oak
#

oh thats a good idea

smoky oak
#

using a pivot as item stack takes care of a lot of the messy stuff i wouldve done

#

also cant you do the last part as a while loop? while get > amount : clone; set size amount; decrease get by amount

#

then do the last part where it generates a stack with the leftover?

#

removes the if else thing

gray merlin
#

To be fair, I was so happy that I found an use for a "do while" that that kinda went as an oversight

#

I still don't quite understand what you mean

smoky oak
#
//for item in list 
  int amount = item.getMaxStackSize();
  while(generationMap.get(item) > amount){
    ItemStack itemClone = item.clone();
    itemClone.setAmount(amount);
    compressedList.add(itemClone);
    generationMap.put(item, generationMap.get(item) - amount);
  }
  amount = generationMap.get(item);
  ItemStack itemClone = item.clone();
  itemClone.setAmount(amount);
  compressedList.add(itemClone);
#

that

gray merlin
#

Ahhh, true.

smoky oak
#

welp imma go and die now

#

ive been awake for far too long

#

maybe ill be existent in another 12 hours

#

oh before i go tho

#

we do have a dedicated paste

#

?paste

undone axleBOT
gray merlin
#

oh hastebin

#

I stopped using that one because it broke for me many times

#

but i'll keep that in mind for spigot

#

thanks!

smoky oak
#

np

#

i use it cuz its the fastest

#

type paste and do ctrl c ctrl v

gray merlin
smoky oak
#

what now

gray merlin
#

So i'll just keep the do while

gray merlin
smoky oak
#

ah well you could stuff it in a method

#

i think my method is faster so I would use my version

gray merlin
#

Yeah, that's fair

smoky oak
#

but i cant know without benchmarking and it doesnt really matter for like 60 items max so

gray merlin
#

?paste

undone axleBOT
smoky oak
#

🤷‍♂️

gray merlin
#

Here's it using yours

#

I'll use my method though, since it complies with DRY & it's literally the first do while that I use in like... Three years? xD

#

Thank you guys for the pointers!

smoky oak
#

sure

#

one lesson i learned while programming is not to optimize prematurely or in the wrong spot

#

some youtuber made a video to the effect 'if your code is horrible but still only takes 20ms, you should optimize your graphics engine to fix lag, not your o(n^2) method that you call once every three minutes

ivory sleet
#

But generally speaking thats the principle

smoky oak
#

why does everybody have a new profile pic except choco -.-

ivory sleet
#

Uh

#

My friend enforced me

ivory sleet
#

Well

gray merlin
smoky oak
#

well i do too

#

im not mucking around with how i present myself tho ??

ivory sleet
#

Dont think so?

smoky oak
#

yup definitively too tired for this

#

see yall later

sterile token
#

Conclure

#

You are alive

wet breach
sterile token
#

Because i know what its and how it works but i dont know how to apply or implement it into java

wet breach
#

async is the process of spreading out the work load. This can be done over a period of time or with the use of threading

sterile token
#

I know that

#

I dont know how to implement it on java that my big issue

wet breach
#

if you don't use threads, you would have some form of timer that dictates when it needs to stop processing on that work because it is taking too long and to move onto something else

hazy parrot
#

Just use build in classes for it ie Executors (or BukkitRunnable if working with spigot)

#

You can Google about executors

wet breach
#

they are wanting to know implementation

hazy parrot
#

?

wet breach
#

two very different things

sterile token
#

I mean i dont know what to use for async in java

echo basalt
#

Executors

sterile token
#

Since there are lot of things, Future, ComplatbleFuture, Executors

echo basalt
#

CompletableFuture

ivory sleet
#

Async is the art of code that does not run linearly to its natural flow of declaration

echo basalt
#

I abuse CompletableFuture

wet breach
#

Nvm, I thought they were attempting to make something of their own, which is implementation lol

ivory sleet
#

Has nothing to do with multiple threads inherently

sterile token
#

There i so much shit for aync that im lost

hazy parrot
sterile token
#

Ok

#

Because im doing an event-driven system based on redis

#

So i want to implement async into my events

echo basalt
#

CompletableFuture just plays with executors internally

ivory sleet
#

Its alr partly async

wet breach
ivory sleet
#

Everything is async usually, async is just a relation at the end

wet breach
#

but ok

sterile token
ivory sleet
#

I mean they probably write an abstraction on top of the redis impl

#

Dk how terrible that is

ivory sleet
#

Dont know

sterile token
#

I mean you said that what ima doing is horrible?

ivory sleet
#

No

sterile token
#

Oh ok

#

I thought i had another one swearing about my way of coding

#

Hahaha

echo basalt
#

Multithreading is one of those concepts that I understand but can't explain

ivory sleet
#

But anyway what redis lib do u use

sterile token
#

yeah i think using redis alone its really pissing because it rather support String or Byte

ivory sleet
#

Byte is nice

#

Just use the java stuff to read the byte stream

#

And tada

dusk flicker
#

I basically just made a 'Packet' of sorts that just contains like an id, serialize/deserialize methods from whatever object im passing over redis

sterile token
ivory sleet
#

Nice

sterile token
#

Basically doing redis even more simplier

#

Conclure

ivory sleet
#

Mye ig

sterile token
#

I also need some recommendations

#

About event-listening

ivory sleet
#

Sure

sterile token
#

Allright

#

I have replied spigot ones

#

Imagine how ill i am

ivory sleet
tender shard
#

VANO13

sterile token
#

I mean i have my own event-listening which works similar/exactly the same as spigot ones

ivory sleet
#

Oh ok

sterile token
#

🥵

ivory sleet
#

Lol ok

#

Go on

sterile token
#

And now i want to make the async part

tender shard
sterile token
ivory sleet
#

Youuuuu alrwady sent it in general :-{

tender shard
ivory sleet
#

Just invoke the method on whatever thread needed

ancient plank
#

I wish having two instances of Minecraft open with intellij was doable on my computer

sterile token
ancient plank
#

I mean it's doable but very slow and freezes

#

Painful

sour wedge
#

For me eclipse works like a beest🤣

ivory sleet
#

Executor executor = Executors.newCachedThreadPool();
executor.execute(()->{
try{
eventManager.callEvent(event);
}catch(Throwable e){
//handle
}
});

#

Verano

ancient plank
#

Minecraft eats all my memory

ivory sleet
#

Also eclipse is fine

ivory sleet
sterile token
#

I mean i have ilnesses with eclipse

#

I sufered a lot when i used it

#

Now that im able to auto maintain jetbrains ultimate version 🤑

sour wedge
#

You need to know how to use true

sterile token
dusk flicker
#

i mean as much as I dislike eclipse

#

its preference

#

nothing else

sterile token
#

Althought Jetbrains Ultimate neither Jetbrains community are optimized i can confirm that

sour wedge
#

I think i have a lot of pain when i go over Jetbains scared to break all my stuf

river oracle
#

be a real chad like me and use VSCode

sterile token
#

Lmao that its 100 worst than just using eclipse

#

🤌

river oracle
#

not really have you ever actually used it or do you just hear things and spout them back out

sterile token
#

lmao too much air for day

#

I dont have anymore i cannot figure how i smoke a cage of 12

#

I know its non topic related question but im feel my self really dumb

#

Conclure also thanks for providing me that example

quiet ice
#

VSCode uses JDT afaik, so Not tooo much of an issue ig

#

And I beliebte IJ is able to convert JDT Projects to IJ projects. I really Wonder why people don't use eclipse more often If it is compatible with any other mainstream IDE outside netbeans

#

And do Not Tell me that you are using vi - because that is false

#

There are No Java devs that use vi. Only C/C++ use vi because their tooling sucks ass

river oracle
#

otherwise it works perfectly fine

quiet ice
#

Sorry WHAT

river oracle
#

it looks older than Intellij

#

just a fact

quiet ice
#

Nah, IntelliJ Just Looks futuristic

river oracle
#

VSC looks better than eclipse lol

#

I'm addicted to my enhanced text editor that provides the same functionality as an IDE

wet breach
ancient plank
#

vsc looks nice because it's minimalistic

river oracle
ancient plank
#

when I used eclipse I couldn't get maven to work out of the box so that was why I swapped to ij

river oracle
#

When I wanted to use maven I swaped to vsc lol

#

I have brain damage though so

#

I make bad decisions

wet breach
ancient plank
#

big brain

wet breach
#

for the most part it works almost the same, just some things not so much lol

ancient plank
#

I like eclipse for how light it is, if I had managed to repair my old laptop I was planning on putting eclipse onto it so I could've coded plugins while in school kek

wet breach
#

eclipse doesn't give me the impression for being light

#

when it takes ages for it to load

ancient plank
#

it loaded so fast for me when I used it

river oracle
#

I'm on the ultimate text editor right now

ancient plank
#

hasn't been wood for a long time

#

idk, whichever version they added different buttons for different wood types

#

google

#

"minecraft when did they add spruce buttons"

#

1.13

#

literally the first result of google if you google button in minecraft

#

quite literally the easiest thing to do

wet breach
#

you mean lack of vocabulary skills

#

only two words have to be used, button minecraft

#

learn and adapt or get left behind 🙂

obsidian roost
#

Hi, is there any way to make a fishing rod bobber invisible? The FishHook cast to an entity has no .setVisible

sterile token
#
public class B extends A {}

A.class.isAssignableFrom(B.class); // true

floral drum
#

owo

tender shard
#

Use maven or gradle or get rekd. Im tired of people who still havent read the 1.17/1.18 announcement, duh

valid sorrel
#

how do I make a plugin that changes the server-side collision for blocks?

tender shard
#

you don't

#

movement is like 90% client sided

valid sorrel
#

no

#

affecting mobs

#

idrc about the client movement

#

that's why I said server-side collision

#

rubberbanding because of different collision from client/server is the behavior I'm looking for

tender shard
#

you need NMS

#

but it won't properly work because the client will not understand your custom logic

valid sorrel
#

rubberbanding and glitchy behavior

tender shard
#

yeah that won't work unless you hook into the netty handler and do all the calculations yourself

#

what are you trying to achieve exactly?

valid sorrel
#

removing collision from blocks that have collision and adding collision to blocks that don't have collision

young knoll
#

But only for mobs

#

So essentially creepers with wall hacks

tender shard
#

the client already does the collision calculations before it sends any movement packets

valid sorrel
tender shard
#

you cannot just get rid of them

valid sorrel
#

I'm only looking to modify serverside collision

#

nothing client-sided

#

it's desirable to have the desync between client and server

tender shard
valid sorrel
#

only server-side entities would be affected

#

clients would just be glitchy at most

tender shard
valid sorrel
#

I don't want it to be modified on client

#

only server

#

so it desyncs

tender shard
#

then you gotta listen to the PlayerMoveEvent, do all the calculations yourself (which are complicated as fuck) and notify the clients about their acrual new location

valid sorrel
#

huh

#

I don't have to though

#

I don't want the clients do have the new collision

#

only entities

#

so mobs can go through walls but players can't

tender shard
#

that's even more complicated. you gotta mess with every Mob's pathfinder goals then, I guess

valid sorrel
#

can't I just set the serverside collision

#

and I'm done

young knoll
#

Probably not with a plugin

valid sorrel
#

I saw few that does it

young knoll
#

You’re better off modifying the server itself

tender shard
valid sorrel
#

disables bamboo collision for alternate clients

sterile token
#
Map<Integer, String> prefixes = new HashMap<>();
String highest =  prefixes.entrySet().stream().sorted(Map.Entry.comparingByKey()).findFirst().get().getValue();
#

I need te equipvalent but for Set

tender shard
sterile token
#

I need to sort a Set<Listener> via priority

tender shard
#

why are you using a Set if you want to sort it?

#

why not just use a List instead?

sterile token
tender shard
#

use a List if you wanna sort it

sterile token
#

I dont really kno why

#

Any recommendation?

tender shard
#

yes

#

use a List

sterile token
#

Allr im opened

#

Its better? why?

#

Just to learn and improve

tender shard
#

because you can sort it

#

a set is basically an unsorted set of objects

sterile token
#

Oh ok perfect, but List doesnt require more than a Set

tender shard
#

while a list is a sortable list of objects

sterile token
#

Because Set is ordered right?

tender shard
#

no

sterile token
#

I have mess with the collections

tender shard
#

a Set, or at least most set implmenentations, do not have any order

sterile token
#

So why i cannot sort a Set?

tender shard
#

because

#

it's a set

#

use a list if you wanna sort it

sterile token
#

Sorry for being painful..

tender shard
#

Set = random amount of things

#

List = random amount of things with a particular order

#

(not 100% true but that's the general idea of set vs list)

#

set = "list without order"

sterile token
#

but List desnt have an order

tender shard
#

bullshit

sterile token
#

Its weird

tender shard
#

list = set with order

#

(plus a few other quirks you dont care about)

young knoll
#

ArrayList is insertion ordered for example

tender shard
#

wanna sort? use list. don't wanna sort? use set

sterile token
#

I dont need order althought i just need to sort them before invoking each event

tender shard
valid sorrel
#

can I teleport player without sending packet

sterile token
#

Perfect im using a List

scarlet creek
#

Quick question, for the projectile launch event, does the get entity method get the specific unique identity of the projectile?

sterile token
tender shard
valid sorrel
#

or is there a method to teleport them without sending the packet

sterile token
#

mfalex i mean i dont understand how to sort a List correctly

tender shard
#

why don't you just use Player#teleport ?

sterile token
scarlet creek
valid sorrel
#

that tells the player that they were teleported

young knoll
#

Sure

sterile token
young knoll
scarlet creek
#

Ah alright thanks

valid sorrel
#

so the client doesn't know that they were teleported

#

but instead it just thinks it's in the same place

#

while it's at a different place on the server

young knoll
#

I’m sure you can, but you’d have to go fairly deep into NMS

valid sorrel
#

so teleport then cancel packet is easier

sterile token
#

mfalex

#

The main issue is that i have ListenerInfo object which i need to sort via the Priority

#

And priority is not inside ListenerInfo, is inside the object EventHandler

dry forum
#

is it possible to detect when a player moves there head or smthn like that im trying to make it so the player moves in the direction they look (up down left and right and the armorstand they are on is what moves)

young knoll
#

PlayerMoveEvent

dry forum
#

that gets the location though

young knoll
#

And?

#

Location includes pitch and yaw

dry forum
#

but thats called when a player moves

#

not when their head moves

sterile token
#

Location object from bukkit allows you to use methods getPitch() and getYaw()

sterile token
young knoll
#

It’s also called when their head moves

dry forum
#

when a player looks in front of them for example they move forward

#

ah

sterile token
#

😂

dry forum
#

huh?

valid sorrel
#

player.getLocation().setX/Y/Z seems to work for teleporting players without clients knowing

#

I think

#

or maybe not

young knoll
#

It won’t

#

getLocation returns a clone

valid sorrel
#

why is there not a setLocation

#

why is spigot api so limited 😭

worldly ingot
#

Because there's a teleport() ;p

valid sorrel
#

but I need it to call it from async

#

and also I don't want it to send a packet

worldly ingot
#

Well that's two red flags

young knoll
#

NMS doesn’t even have that I imagine

valid sorrel
#

why not

#

I could make it call main thread

#

then teleport player

#

then cancel packet

#

but that's sooooo dumb :(((

shut field
#

is there no goathorn data yet

#

or someway to change the goathorn instrument

valid sorrel
#

I wish you could touch the nbt directly

worldly ingot
#

Everything saved in NBT can be directly accessed with methods on Entity and its derivative classes

wet breach
valid sorrel
#

like item nbt?

worldly ingot
#

ItemMeta

wet breach
#

but in regards to teleporting players however and not have the client know is actually impossible. You could kind of simulate I suppose but I think you are unaware of the relationship of the client and server

valid sorrel
#

like how you do it in vanilla commands?

wet breach
#

the client is the one that controls the location for the most part

valid sorrel
#

so I'm trying too force a position

#

just on the server

#

to get the desired effect

wet breach
#

not sure what effect you are wanting

valid sorrel
#

server using different location from client, so it does different calculations

wet breach
#

like you want the player to be floating with nothing around?

#

you could do that in just the code

#

new Location()

valid sorrel
#

no

#

I want the player to think that they're not teleported

#

but they are at a different place actually

wet breach
#

ok, not sure for what purpose and still don't know what effect

valid sorrel
#

aaaaaaa

#

my alt+tab keeps switching to wrong window

#

anyway

#

the effect is

#

doing movement calculations myself

#

so when I'm done

#

I can teleport them without sending a packet

wet breach
#

elaborate more

valid sorrel
#

soo the server can't mess with the player's location

wet breach
#

it can but go on

valid sorrel
#

idk how to explain really

wet breach
#

then it sounds like you might be going about this the wrong way then and might need to think about it more if you are unable to explain it in such a way to get help

vocal cloud
#

You want to disconnect the client and the server so the client sees one location and the server another?

vocal cloud
#

Why

valid sorrel
#

so I can make the server behave as if the player is somewhere else

wet breach
vocal cloud
#

What would this accomplish?

valid sorrel
#

maybe I can try with a bukkitscheduler (to teleport them in main) and canceling packet

vocal cloud
#

You can't just disconnect the two. They're intrinsically linked

wet breach
#

not only that, for the most part the client dictates the location

vocal cloud
#

To do so would potentially make the game client authoritative

wet breach
#

yes the server can change it, but you won't be able to really do so without the client knowing

valid sorrel
#

hmmm?

#

for example player is at position x on their own client but other players sees them at position y

vocal cloud
#

If you don't tell the client where it is ever the client would be desynced and unable to do anything

wet breach
vocal cloud
#

You can create a fake version of the player I suppose and hide the real one

valid sorrel
#

not really

young knoll
#

Or just mess with the packets being sent to other clients

valid sorrel
#

then the server thinks the player is at the correct location

#

which is not what I want

wet breach
#

in fact the server doesn't need to know that the other entity is a fake player only that it is just an entity

#

what the entity looks like the server doesn't care

#

so you can dress it up as a clone of your player

valid sorrel
#

can't I just make the server think that the player is at position x but the player is actually at y

wet breach
#

and it mimic movements

floral drum
valid sorrel
#

what you've explained is just visual

wet breach
valid sorrel
#

no?

#

have the client think that they are at x

#

but server at y

sterile token
#

Lmao trying to jump thru a window because i cannot do a simple list sort by priority

wet breach
#

so the better way is to use another entity that looks like your player and mimics its movements. Your players won't know the difference depending how well you do it

valid sorrel
wet breach
#

it doesn't need to be

valid sorrel
wet breach
#

ok so far we have covered the appearing in two locations

#

what is the next thing it needs to accomplish

floral drum
#

Or this @sterile token

sterile token
# floral drum Can't you do this?

In my case its really diff, i have a List<ListenerInfo>, then i have a EventHandler reference, and then from EventHandle ri can finally get the priority

wet breach
# valid sorrel it does for what I'm trying to accomplish

right now you have some of the most experienced individuals on right now in regards to knowing MC inside and out including the client. You won't be able to separate the client and server from being synchronized. However there might be other ways to go about what you are wanting to accomplish. Let us know what else needs to be done, we discussed how you can make it appear for a player to be in two places

#

not sure what else you need to have it do that would absolutely require a duplicate player object

valid sorrel
#

no duplicate needed

#

just client thinks location x server thinks location y

#

server rejects client's location

#

and it just believes its own imaginations

wet breach
#

server doesn't think anything is the thing

#

the server only knows where the player is at, because that is what the client said

valid sorrel
#

so server ignores what client says

#

that's what I'm going for

wet breach
#

then it doesn't have a way of knowing where the player is at in the world

young knoll
#

I mean

valid sorrel
#

what I want to do

young knoll
#

Start by casting out any movement packets from the client

floral drum
young knoll
#

See what happens

floral drum
#

which is what sends the position data

#

If it's still called that in later versions

valid sorrel
#

but I need to move that player without telling the client

floral drum
#

yeah by cancelling that packet I mentioned above, that should be possible

young knoll
#

Use reflection to update the players position field

valid sorrel
#

I tried but I need to move them as well

#

without telling the client

floral drum
#

Cancel the teleport packet being sent to the client

young knoll
#

Or cancel the clientbound movement packet

floral drum
#

this one

valid sorrel
vocal cloud
#

You can't do this because if the server doesn't know where the client is then the client can't load any chunks

young knoll
#

Not much to explain

wet breach
#

I believe there is a better way to do this, instead of all this complex stuff if they would just explain the reasoning behind needing something like this

dry forum
#

how can i have 2 of the same variable in an arraylist

vocal cloud
#

This sounds so awful you're just desyncing the client for no reason

young knoll
#

The players position is probably private, so you need reflect to change it

#

In EntityPlayer or Entity or wherever it is

wet breach
#

but I will let them figure that out I suppose

young knoll
#

Never seen that happen

valid sorrel
young knoll
#

Decompiler

valid sorrel
#

oh okay I'm looking into it rn

#

so it's from Entity

young knoll
#

Afaik the client only disconnects if the keep alive system fails

#

Or yknow, they press the button

vocal cloud
#

This whole thing seems like a long winded XY problem but what do I know lol

floral drum
#

You might be able to use the method "setPositionRaw" if it doesn't send any packets to the client about their position @valid sorrel

young knoll
#

I don’t see why such a method would exist

#

But it’s worth a look

valid sorrel
#

I don't see it anywhere

floral drum
#

What version is this on?

valid sorrel
#

1.19.2

floral drum
#

alr thanks

vocal cloud
#

So the client rubber bands and then the server moves the players actual body around? Who would use such a system lol

valid sorrel
#

the client doesn't know that it's being moved around

vocal cloud
#

So the server is moving the clients body around and the client isn't moving?

valid sorrel
#

yeah

#

hmmmm

vocal cloud
#

And you want to desync them instead of just making the player invisible and moving a fake version of the player around?

valid sorrel
#

wonder where it overrides getlocation

young knoll
#

Basically the client and server stop communicating the players position with each other

#

So single player but worse

floral drum
vocal cloud
#

This seems like it's going to be a disaster waiting to happen

valid sorrel
#

I love disaster

young knoll
#

You can simulate the same thing with really shitty internet

#

Source: 10/1 internet

floral drum
#

owo

valid sorrel
minor crest
#

bro what

young knoll
#

Who provides 80 down and 0.25 up

valid sorrel
#

no

#

down 0.25

#

up 80

floral drum
young knoll
#

Now I’m even more confused

valid sorrel
#

do you know where the location is coming from in Player

young knoll
#

Who provides 0.25 down and 80 up

valid sorrel
#

so I can modify it

dry forum
valid sorrel
#

idk some provider which has way too much download but too free upload