fix ItemDisplayMeta
This commit is contained in:
parent
4988e00ba8
commit
b4cdf0e9cd
4 changed files with 77 additions and 8 deletions
|
@ -5,7 +5,9 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="9d5d9b6f-43c8-41a4-bb42-a66ffc96c9b0" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/tofaa/entitylib/entity/WrapperEntityCreature.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/tofaa/entitylib/entity/WrapperEntityCreature.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/me/tofaa/entitylib/meta/display/ItemDisplayMeta.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/tofaa/entitylib/meta/display/ItemDisplayMeta.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test-plugin/src/main/java/me/tofaa/entitylib/TestDisplayCommand.java" beforeDir="false" afterPath="$PROJECT_DIR$/test-plugin/src/main/java/me/tofaa/entitylib/TestDisplayCommand.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -210,7 +212,7 @@
|
|||
<workItem from="1705192736239" duration="496000" />
|
||||
<workItem from="1705534524814" duration="15424000" />
|
||||
<workItem from="1705578156456" duration="78000" />
|
||||
<workItem from="1705636302508" duration="2201000" />
|
||||
<workItem from="1705636302508" duration="4010000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package me.tofaa.entitylib.meta.display;
|
||||
|
||||
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes;
|
||||
import com.github.retrooper.packetevents.protocol.item.ItemStack;
|
||||
import me.tofaa.entitylib.meta.Metadata;
|
||||
import me.tofaa.entitylib.meta.types.DisplayMeta;
|
||||
|
||||
|
@ -13,12 +14,20 @@ public class ItemDisplayMeta extends DisplayMeta {
|
|||
super(entityId, metadata);
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return super.metadata.getIndex(OFFSET, ItemStack.EMPTY);
|
||||
}
|
||||
|
||||
public void setItem(ItemStack itemStack) {
|
||||
super.metadata.setIndex(OFFSET, EntityDataTypes.ITEMSTACK, itemStack);
|
||||
}
|
||||
|
||||
public DisplayType getDisplayType() {
|
||||
return DisplayType.VALUES[super.metadata.getIndex(OFFSET, 0)];
|
||||
return DisplayType.VALUES[super.metadata.getIndex(offset(OFFSET, 1), 0)];
|
||||
}
|
||||
|
||||
public void setDisplayType(DisplayType displayType) {
|
||||
super.metadata.setIndex(OFFSET, EntityDataTypes.BYTE, (byte) displayType.ordinal());
|
||||
super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.BYTE, (byte) displayType.ordinal());
|
||||
}
|
||||
|
||||
public enum DisplayType {
|
||||
|
|
|
@ -19,9 +19,13 @@ public final class EntityLibPlugin extends JavaPlugin {
|
|||
EntityLib.init(PacketEvents.getAPI());
|
||||
EntityLib.enableEntityInteractions();
|
||||
EntityLib.setInteractionProcessor((entity, action, hand, user) -> user.sendMessage("Hello World"));
|
||||
|
||||
TestDisplayCommand testDisplayCommand = new TestDisplayCommand();
|
||||
getCommand("testdisplay").setExecutor(testDisplayCommand);
|
||||
getCommand("testdisplay").setTabCompleter(testDisplayCommand);
|
||||
|
||||
getCommand("testapi").setExecutor(new TestCommand());
|
||||
getCommand("testentity").setExecutor(new TestEntityCommand());
|
||||
getCommand("testdisplay").setExecutor(new TestDisplayCommand());
|
||||
getCommand("spawnclickablefrog").setExecutor(new SpawnClickableFrogCommand());
|
||||
instance = this;
|
||||
}
|
||||
|
|
|
@ -1,34 +1,88 @@
|
|||
package me.tofaa.entitylib;
|
||||
|
||||
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
|
||||
import com.github.retrooper.packetevents.protocol.item.ItemStack;
|
||||
import com.github.retrooper.packetevents.protocol.item.type.ItemTypes;
|
||||
import com.github.retrooper.packetevents.util.Vector3f;
|
||||
import io.github.retrooper.packetevents.util.SpigotConversionUtil;
|
||||
import me.tofaa.entitylib.entity.WrapperEntity;
|
||||
import me.tofaa.entitylib.meta.display.BlockDisplayMeta;
|
||||
import me.tofaa.entitylib.meta.display.ItemDisplayMeta;
|
||||
import me.tofaa.entitylib.meta.display.TextDisplayMeta;
|
||||
import me.tofaa.entitylib.meta.types.DisplayMeta;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class TestDisplayCommand implements CommandExecutor {
|
||||
public class TestDisplayCommand implements CommandExecutor, TabCompleter {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
|
||||
if (strings.length == 0) return false;
|
||||
String type = strings[0];
|
||||
Player player = (Player) commandSender;
|
||||
switch (type) {
|
||||
case "block":
|
||||
block(player);
|
||||
break;
|
||||
case "text":
|
||||
text(player);
|
||||
break;
|
||||
case "item":
|
||||
item(player);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void block(Player player) {
|
||||
WrapperEntity e = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.BLOCK_DISPLAY);
|
||||
BlockDisplayMeta meta = (BlockDisplayMeta) e.getMeta();
|
||||
meta.setHasGlowingEffect(true);
|
||||
meta.setBlockId(Material.AMETHYST_BLOCK.getId());
|
||||
meta.setBillboardConstraints(DisplayMeta.BillboardConstraints.CENTER);
|
||||
meta.setScale(new Vector3f(2, 2, 2));
|
||||
e.addViewer(player.getUniqueId());
|
||||
e.spawn(SpigotConversionUtil.fromBukkitLocation(player.getLocation()));
|
||||
}
|
||||
|
||||
private void text(Player player) {
|
||||
WrapperEntity e = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.TEXT_DISPLAY);
|
||||
TextDisplayMeta meta = (TextDisplayMeta) e.getMeta();
|
||||
meta.setHasGlowingEffect(true);
|
||||
meta.setText(Component.text("Hello World!"));
|
||||
meta.setBillboardConstraints(DisplayMeta.BillboardConstraints.CENTER);
|
||||
meta.setScale(new Vector3f(2, 2, 2));
|
||||
meta.setTranslation(new Vector3f(10, 0, 0));
|
||||
e.addViewer(player.getUniqueId());
|
||||
e.spawn(SpigotConversionUtil.fromBukkitLocation(player.getLocation()));
|
||||
return false;
|
||||
}
|
||||
|
||||
private void item(Player player) {
|
||||
WrapperEntity e = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.ITEM_DISPLAY);
|
||||
ItemDisplayMeta meta = (ItemDisplayMeta) e.getMeta();
|
||||
meta.setDisplayType(ItemDisplayMeta.DisplayType.FIRST_PERSON_LEFT_HAND);
|
||||
meta.setItem(ItemStack.builder()
|
||||
.type(ItemTypes.ACACIA_BOAT).build()
|
||||
);
|
||||
e.addViewer(player.getUniqueId());
|
||||
e.spawn(SpigotConversionUtil.fromBukkitLocation(player.getLocation()));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) {
|
||||
return strings.length == 1 ? Arrays.asList("block", "text", "item") : null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue