Skip to content

Commit

Permalink
Add FS_BlockDisplay
Browse files Browse the repository at this point in the history
  • Loading branch information
OliverSchlueter committed Aug 3, 2024
1 parent a8fb6e3 commit 8a73512
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package de.oliver.fancysitula.api.entities;

import de.oliver.fancysitula.api.packets.FS_ClientboundSetEntityDataPacket;
import de.oliver.fancysitula.api.utils.entityData.FS_BlockDisplayData;
import org.bukkit.entity.EntityType;

import java.util.List;

public class FS_BlockDisplay extends FS_Display {

protected FS_ClientboundSetEntityDataPacket.EntityData blockData = new FS_ClientboundSetEntityDataPacket.EntityData(FS_BlockDisplayData.BLOCK, null);

public FS_BlockDisplay() {
super(EntityType.BLOCK_DISPLAY);
}

public org.bukkit.block.BlockState getBlock() {
return (org.bukkit.block.BlockState) this.blockData.getValue();
}

public void setBlock(org.bukkit.block.BlockState block) {
this.blockData.setValue(block);
}

@Override
public List<FS_ClientboundSetEntityDataPacket.EntityData> getEntityData() {
List<FS_ClientboundSetEntityDataPacket.EntityData> entityData = super.getEntityData();
entityData.add(this.blockData);
return entityData;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package de.oliver.fancysitula.api.utils.entityData;

import de.oliver.fancysitula.api.packets.FS_ClientboundSetEntityDataPacket;

public class FS_BlockDisplayData {

/**
* Use {@link org.bukkit.block.Block} as value
*/
public static final FS_ClientboundSetEntityDataPacket.EntityDataAccessor BLOCK = new FS_ClientboundSetEntityDataPacket.EntityDataAccessor("net.minecraft.world.entity.Display$BlockDisplay", "DATA_BLOCK_STATE_ID");

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.server.level.ServerPlayer;
import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.block.CraftBlockState;
import org.bukkit.inventory.ItemStack;

import java.util.ArrayList;
Expand Down Expand Up @@ -42,6 +44,10 @@ public Object createPacket() {
vanillaValue = net.minecraft.world.item.ItemStack.fromBukkitCopy(i);
}

if (data.getValue() instanceof BlockState b) {
vanillaValue = ((CraftBlockState) b).getHandle();
}

dataValues.add(SynchedEntityData.DataValue.create(accessor, vanillaValue));
} catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package de.oliver.fancysitula.commands;

import de.oliver.fancysitula.api.entities.FS_ItemDisplay;
import de.oliver.fancysitula.api.entities.FS_BlockDisplay;
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
import de.oliver.fancysitula.api.packets.FS_ClientboundPlayerInfoUpdatePacket;
import de.oliver.fancysitula.api.utils.FS_GameProfile;
import de.oliver.fancysitula.api.utils.FS_GameType;
import de.oliver.fancysitula.factories.FancySitula;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -41,12 +42,19 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String s, @NotNul
// fakeTextDisplay.setBackground(0xFF00C8FF);
// FancySitula.ENTITY_FACTORY.spawnEntityFor(fsPlayer, fakeTextDisplay);

FS_ItemDisplay fakeItemDisplay = new FS_ItemDisplay();
fakeItemDisplay.setBillboardRenderConstraints((byte) 3);
fakeItemDisplay.setScale(new Vector3f(5f));
fakeItemDisplay.setLocation(p.getLocation());
fakeItemDisplay.setItem(p.getInventory().getItemInMainHand());
FancySitula.ENTITY_FACTORY.spawnEntityFor(fsPlayer, fakeItemDisplay);
// FS_ItemDisplay fakeItemDisplay = new FS_ItemDisplay();
// fakeItemDisplay.setBillboardRenderConstraints((byte) 3);
// fakeItemDisplay.setScale(new Vector3f(5f));
// fakeItemDisplay.setLocation(p.getLocation());
// fakeItemDisplay.setItem(p.getInventory().getItemInMainHand());
// FancySitula.ENTITY_FACTORY.spawnEntityFor(fsPlayer, fakeItemDisplay);

FS_BlockDisplay fakeBlockDisplay = new FS_BlockDisplay();
fakeBlockDisplay.setBillboardRenderConstraints((byte) 3);
fakeBlockDisplay.setScale(new Vector3f(5f));
fakeBlockDisplay.setLocation(p.getLocation());
fakeBlockDisplay.setBlock(Material.DIAMOND_BLOCK.createBlockData().createBlockState());
FancySitula.ENTITY_FACTORY.spawnEntityFor(fsPlayer, fakeBlockDisplay);

return true;
}
Expand Down

0 comments on commit 8a73512

Please sign in to comment.