mirror of https://github.com/Minestom/Minestom.git
Use negative entity id for the custom breaking system
This commit is contained in:
parent
32d13dcbd1
commit
b2e3d3e78d
|
@ -96,6 +96,7 @@ public class ColoredText extends JsonMessage {
|
||||||
* Gets the raw text.
|
* Gets the raw text.
|
||||||
*
|
*
|
||||||
* @return the raw text
|
* @return the raw text
|
||||||
|
* @see #toString() for the Json representation
|
||||||
*/
|
*/
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return message;
|
return message;
|
||||||
|
@ -104,7 +105,7 @@ public class ColoredText extends JsonMessage {
|
||||||
/**
|
/**
|
||||||
* Gets the Json representation of this colored text.
|
* Gets the Json representation of this colored text.
|
||||||
* <p>
|
* <p>
|
||||||
* Used to send a message.
|
* Used to "compile" the message, retrieved with {@link #toString()}.
|
||||||
*
|
*
|
||||||
* @return the Json representation of the text
|
* @return the Json representation of the text
|
||||||
*/
|
*/
|
||||||
|
@ -129,7 +130,6 @@ public class ColoredText extends JsonMessage {
|
||||||
mainObject.add("extra", extraArray);
|
mainObject.add("extra", extraArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return mainObject;
|
return mainObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,9 @@ public abstract class JsonMessage {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the string json representation.
|
* Gets the Json representation.
|
||||||
|
* <p>
|
||||||
|
* Used to send messages.
|
||||||
*
|
*
|
||||||
* @return the string json representation
|
* @return the string json representation
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,8 +8,9 @@ import org.jglrxavpok.hephaistos.nbt.SNBTParser;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Argument used to retrieve a {@link NBT} based object, can be a
|
* Argument used to retrieve a {@link NBT} based object, can be any kind of tag like
|
||||||
* {@link org.jglrxavpok.hephaistos.nbt.NBTCompound} or {@link org.jglrxavpok.hephaistos.nbt.NBTList}
|
* {@link org.jglrxavpok.hephaistos.nbt.NBTCompound}, {@link org.jglrxavpok.hephaistos.nbt.NBTList},
|
||||||
|
* {@link org.jglrxavpok.hephaistos.nbt.NBTInt}, etc...
|
||||||
* <p>
|
* <p>
|
||||||
* Example: {display:{Name:"{\"text\":\"Sword of Power\"}"}} or [{display:{Name:"{\"text\":\"Sword of Power\"}"}}]
|
* Example: {display:{Name:"{\"text\":\"Sword of Power\"}"}} or [{display:{Name:"{\"text\":\"Sword of Power\"}"}}]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.Collections;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an object which contain key/value based data.
|
* Represents an object which contains key/value based data.
|
||||||
* <p>
|
* <p>
|
||||||
* See {@link DataImpl} for the default implementation.
|
* See {@link DataImpl} for the default implementation.
|
||||||
*/
|
*/
|
||||||
|
@ -47,7 +47,7 @@ public interface Data {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a value to a specific key.
|
* Assigns a value to a specific key.
|
||||||
*
|
*
|
||||||
* @param key the key
|
* @param key the key
|
||||||
* @param value the value object
|
* @param value the value object
|
||||||
|
@ -86,7 +86,7 @@ public interface Data {
|
||||||
/**
|
/**
|
||||||
* Gets the list of data keys.
|
* Gets the list of data keys.
|
||||||
*
|
*
|
||||||
* @return an unmodifiable {@link Set} containing all keys
|
* @return an unmodifiable {@link Set} containing all the keys
|
||||||
*/
|
*/
|
||||||
Set<String> getKeys();
|
Set<String> getKeys();
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Data} implementation which use a {@link ConcurrentHashMap}
|
* {@link Data} implementation which uses a {@link ConcurrentHashMap}.
|
||||||
*/
|
*/
|
||||||
public class DataImpl implements Data {
|
public class DataImpl implements Data {
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.minestom.server.event.Event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called after a chunk being unload to a certain player.
|
* Called after a chunk being unload to a certain player.
|
||||||
|
* <p>
|
||||||
* Could be used to unload the chunk internally in order to save memory.
|
* Could be used to unload the chunk internally in order to save memory.
|
||||||
*/
|
*/
|
||||||
public class PlayerChunkUnloadEvent extends Event {
|
public class PlayerChunkUnloadEvent extends Event {
|
||||||
|
|
|
@ -41,7 +41,7 @@ public abstract class CustomBlock {
|
||||||
private final Map<Instance, InstanceBreakData> instanceBreakDataMap = new HashMap<>();
|
private final Map<Instance, InstanceBreakData> instanceBreakDataMap = new HashMap<>();
|
||||||
|
|
||||||
public int getBreakEntityId(Player firstBreaker) {
|
public int getBreakEntityId(Player firstBreaker) {
|
||||||
return firstBreaker.getEntityId() + 1;
|
return -firstBreaker.getEntityId();
|
||||||
}
|
}
|
||||||
|
|
||||||
private final short defaultBlockStateId;
|
private final short defaultBlockStateId;
|
||||||
|
|
|
@ -149,11 +149,11 @@ public class ItemStack implements DataContainer {
|
||||||
synchronized (ItemStack.class) {
|
synchronized (ItemStack.class) {
|
||||||
final ColoredText itemDisplayName = itemStack.getDisplayName();
|
final ColoredText itemDisplayName = itemStack.getDisplayName();
|
||||||
final boolean displayNameCheck = (displayName == null && itemDisplayName == null) ||
|
final boolean displayNameCheck = (displayName == null && itemDisplayName == null) ||
|
||||||
(displayName != null && itemDisplayName != null && displayName.equals(itemDisplayName));
|
(displayName != null && displayName.equals(itemDisplayName));
|
||||||
|
|
||||||
final Data itemData = itemStack.getData();
|
final Data itemData = itemStack.getData();
|
||||||
final boolean dataCheck = (data == null && itemData == null) ||
|
final boolean dataCheck = (data == null && itemData == null) ||
|
||||||
(data != null && itemData != null && data.equals(itemData));
|
(data != null && data.equals(itemData));
|
||||||
|
|
||||||
final boolean sameMeta = (itemStack.itemMeta == null && itemMeta == null) ||
|
final boolean sameMeta = (itemStack.itemMeta == null && itemMeta == null) ||
|
||||||
(itemStack.itemMeta != null && itemMeta != null && (itemStack.itemMeta.isSimilar(itemMeta)));
|
(itemStack.itemMeta != null && itemMeta != null && (itemStack.itemMeta.isSimilar(itemMeta)));
|
||||||
|
@ -215,7 +215,7 @@ public class ItemStack implements DataContainer {
|
||||||
/**
|
/**
|
||||||
* Gets the special meta object for this item.
|
* Gets the special meta object for this item.
|
||||||
* <p>
|
* <p>
|
||||||
* Can be null if not any
|
* Can be null if not any.
|
||||||
*
|
*
|
||||||
* @return the item meta
|
* @return the item meta
|
||||||
*/
|
*/
|
||||||
|
@ -550,7 +550,7 @@ public class ItemStack implements DataContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the nbt consumer called when the item is serialized into a packet.
|
* Gets the {@link NBTConsumer} called when the item is serialized into a packet.
|
||||||
*
|
*
|
||||||
* @return the item nbt consumer, null if not any
|
* @return the item nbt consumer, null if not any
|
||||||
*/
|
*/
|
||||||
|
@ -559,7 +559,7 @@ public class ItemStack implements DataContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the item nbt consumer.
|
* Changes the item {@link NBTConsumer}.
|
||||||
*
|
*
|
||||||
* @param nbtConsumer the new item nbt consumer
|
* @param nbtConsumer the new item nbt consumer
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,41 +1,31 @@
|
||||||
package demo;
|
package demo;
|
||||||
|
|
||||||
import demo.blocks.StoneBlock;
|
|
||||||
import demo.generator.ChunkGeneratorDemo;
|
import demo.generator.ChunkGeneratorDemo;
|
||||||
import demo.generator.NoiseTestGenerator;
|
import demo.generator.NoiseTestGenerator;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.attribute.Attribute;
|
|
||||||
import net.minestom.server.attribute.AttributeOperation;
|
|
||||||
import net.minestom.server.benchmark.BenchmarkManager;
|
import net.minestom.server.benchmark.BenchmarkManager;
|
||||||
import net.minestom.server.chat.ColoredText;
|
import net.minestom.server.chat.ColoredText;
|
||||||
import net.minestom.server.data.Data;
|
import net.minestom.server.data.Data;
|
||||||
|
import net.minestom.server.data.DataImpl;
|
||||||
import net.minestom.server.entity.*;
|
import net.minestom.server.entity.*;
|
||||||
import net.minestom.server.entity.damage.DamageType;
|
import net.minestom.server.entity.damage.DamageType;
|
||||||
import net.minestom.server.event.entity.EntityAttackEvent;
|
import net.minestom.server.event.entity.EntityAttackEvent;
|
||||||
import net.minestom.server.event.item.ItemDropEvent;
|
import net.minestom.server.event.item.ItemDropEvent;
|
||||||
import net.minestom.server.event.item.ItemUpdateStateEvent;
|
|
||||||
import net.minestom.server.event.item.PickupItemEvent;
|
import net.minestom.server.event.item.PickupItemEvent;
|
||||||
import net.minestom.server.event.player.*;
|
import net.minestom.server.event.player.*;
|
||||||
import net.minestom.server.instance.Chunk;
|
import net.minestom.server.instance.Chunk;
|
||||||
import net.minestom.server.instance.Instance;
|
import net.minestom.server.instance.Instance;
|
||||||
import net.minestom.server.instance.InstanceContainer;
|
import net.minestom.server.instance.InstanceContainer;
|
||||||
import net.minestom.server.instance.WorldBorder;
|
|
||||||
import net.minestom.server.instance.block.Block;
|
import net.minestom.server.instance.block.Block;
|
||||||
import net.minestom.server.instance.block.CustomBlock;
|
|
||||||
import net.minestom.server.inventory.Inventory;
|
import net.minestom.server.inventory.Inventory;
|
||||||
import net.minestom.server.inventory.InventoryType;
|
import net.minestom.server.inventory.InventoryType;
|
||||||
import net.minestom.server.item.Enchantment;
|
import net.minestom.server.item.Enchantment;
|
||||||
import net.minestom.server.item.ItemStack;
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.item.Material;
|
import net.minestom.server.item.Material;
|
||||||
import net.minestom.server.item.attribute.AttributeSlot;
|
|
||||||
import net.minestom.server.item.attribute.ItemAttribute;
|
|
||||||
import net.minestom.server.item.metadata.MapMeta;
|
|
||||||
import net.minestom.server.network.ConnectionManager;
|
import net.minestom.server.network.ConnectionManager;
|
||||||
import net.minestom.server.ping.ResponseDataConsumer;
|
import net.minestom.server.ping.ResponseDataConsumer;
|
||||||
import net.minestom.server.scoreboard.Sidebar;
|
|
||||||
import net.minestom.server.storage.StorageLocation;
|
import net.minestom.server.storage.StorageLocation;
|
||||||
import net.minestom.server.storage.StorageOptions;
|
import net.minestom.server.storage.StorageOptions;
|
||||||
import net.minestom.server.utils.BlockPosition;
|
|
||||||
import net.minestom.server.utils.Position;
|
import net.minestom.server.utils.Position;
|
||||||
import net.minestom.server.utils.Vector;
|
import net.minestom.server.utils.Vector;
|
||||||
import net.minestom.server.utils.time.TimeUnit;
|
import net.minestom.server.utils.time.TimeUnit;
|
||||||
|
@ -44,9 +34,10 @@ import net.minestom.server.world.DimensionType;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerInit {
|
public class PlayerInit {
|
||||||
private static volatile InstanceContainer instanceContainer;
|
|
||||||
|
|
||||||
private static volatile Inventory inventory;
|
private static final InstanceContainer instanceContainer;
|
||||||
|
|
||||||
|
private static final Inventory inventory;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
StorageLocation storageLocation = MinecraftServer.getStorageManager().getLocation("instance_data", new StorageOptions().setCompression(true));
|
StorageLocation storageLocation = MinecraftServer.getStorageManager().getLocation("instance_data", new StorageOptions().setCompression(true));
|
||||||
|
@ -81,9 +72,9 @@ public class PlayerInit {
|
||||||
long ramUsage = benchmarkManager.getUsedMemory();
|
long ramUsage = benchmarkManager.getUsedMemory();
|
||||||
ramUsage /= 1e6; // bytes to MB
|
ramUsage /= 1e6; // bytes to MB
|
||||||
|
|
||||||
|
final ColoredText header = ColoredText.of("RAM USAGE: " + ramUsage + " MB");
|
||||||
|
final ColoredText footer = ColoredText.of(benchmarkManager.getCpuMonitoringMessage());
|
||||||
for (Player player : connectionManager.getOnlinePlayers()) {
|
for (Player player : connectionManager.getOnlinePlayers()) {
|
||||||
ColoredText header = ColoredText.of("RAM USAGE: " + ramUsage + " MB");
|
|
||||||
ColoredText footer = ColoredText.of(benchmarkManager.getCpuMonitoringMessage());
|
|
||||||
player.sendHeaderFooter(header, footer);
|
player.sendHeaderFooter(header, footer);
|
||||||
}
|
}
|
||||||
}).repeat(10, TimeUnit.TICK).schedule();
|
}).repeat(10, TimeUnit.TICK).schedule();
|
||||||
|
@ -128,34 +119,6 @@ public class PlayerInit {
|
||||||
if (block == Block.TORCH) {
|
if (block == Block.TORCH) {
|
||||||
event.setCustomBlock((short) 3); // custom torch block
|
event.setCustomBlock((short) 3); // custom torch block
|
||||||
}
|
}
|
||||||
/*for (Player p : player.getInstance().getPlayers()) {
|
|
||||||
if (p != player)
|
|
||||||
p.teleport(player.getPosition());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/*for (int i = 0; i < 100; i++) {
|
|
||||||
ChickenCreature chickenCreature = new ChickenCreature(player.getPosition());
|
|
||||||
chickenCreature.setInstance(player.getInstance());
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/*EntityZombie zombie = new EntityZombie(player.getPosition());
|
|
||||||
zombie.setAttribute(Attribute.MOVEMENT_SPEED, 0.25f);
|
|
||||||
zombie.setInstance(player.getInstance());*/
|
|
||||||
|
|
||||||
/*FakePlayer.initPlayer(UUID.randomUUID(), "test", fakePlayer -> {
|
|
||||||
//fakePlayer.setInstance(player.getInstance());
|
|
||||||
fakePlayer.teleport(player.getPosition());
|
|
||||||
fakePlayer.setSkin(PlayerSkin.fromUsername("TheMode911"));
|
|
||||||
|
|
||||||
fakePlayer.addEventCallback(EntityDeathEvent.class, e -> {
|
|
||||||
fakePlayer.getController().respawn();
|
|
||||||
});
|
|
||||||
|
|
||||||
fakePlayer.setArrowCount(25);
|
|
||||||
FakePlayerController controller = fakePlayer.getController();
|
|
||||||
controller.sendChatMessage("I am a bot!");
|
|
||||||
});*/
|
|
||||||
//Hologram hologram = new Hologram(player.getInstance(), player.getPosition(), "Hey guy");
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -163,17 +126,6 @@ public class PlayerInit {
|
||||||
if (event.getHand() != Player.Hand.MAIN)
|
if (event.getHand() != Player.Hand.MAIN)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
final Instance instance = player.getInstance();
|
|
||||||
final BlockPosition blockPosition = event.getBlockPosition();
|
|
||||||
|
|
||||||
final CustomBlock customBlock = instance.getCustomBlock(blockPosition);
|
|
||||||
if (customBlock instanceof StoneBlock) {
|
|
||||||
final Data data = instance.getBlockData(blockPosition);
|
|
||||||
if (data != null) {
|
|
||||||
player.sendMessage("test: " + data.get("test"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final short blockStateId = player.getInstance().getBlockStateId(event.getBlockPosition());
|
final short blockStateId = player.getInstance().getBlockStateId(event.getBlockPosition());
|
||||||
final Block block = Block.fromStateId(blockStateId);
|
final Block block = Block.fromStateId(blockStateId);
|
||||||
player.sendMessage("You clicked at the block " + block);
|
player.sendMessage("You clicked at the block " + block);
|
||||||
|
@ -200,9 +152,6 @@ public class PlayerInit {
|
||||||
});
|
});
|
||||||
|
|
||||||
player.addEventCallback(PlayerLoginEvent.class, event -> {
|
player.addEventCallback(PlayerLoginEvent.class, event -> {
|
||||||
//final String url = "https://download.mc-packs.net/pack/a83a04f5d78061e0890e13519fea925550461c74.zip";
|
|
||||||
//final String hash = "a83a04f5d78061e0890e13519fea925550461c74";
|
|
||||||
//player.setResourcePack(new ResourcePack(url, hash));
|
|
||||||
|
|
||||||
event.setSpawningInstance(instanceContainer);
|
event.setSpawningInstance(instanceContainer);
|
||||||
player.setEnableRespawnScreen(false);
|
player.setEnableRespawnScreen(false);
|
||||||
|
@ -210,19 +159,16 @@ public class PlayerInit {
|
||||||
player.setPermissionLevel(4);
|
player.setPermissionLevel(4);
|
||||||
|
|
||||||
player.getInventory().addInventoryCondition((p, slot, clickType, inventoryConditionResult) -> {
|
player.getInventory().addInventoryCondition((p, slot, clickType, inventoryConditionResult) -> {
|
||||||
player.sendMessage("CLICK PLAYER INVENTORY");
|
if (slot == -999)
|
||||||
System.out.println("slot player: " + slot);
|
return;
|
||||||
|
ItemStack itemStack = p.getInventory().getItemStack(slot);
|
||||||
|
Data data = itemStack.getData();
|
||||||
|
if (data != null) {
|
||||||
|
System.out.println("DATA: " + data.get("test"));
|
||||||
|
}
|
||||||
|
System.out.println("slot player: " + slot + " : " + itemStack.getMaterial() + " : " + (itemStack.getData() != null));
|
||||||
});
|
});
|
||||||
|
|
||||||
/*Sidebar scoreboard = new Sidebar("Scoreboard Title");
|
|
||||||
for (int i = 0; i < 15; i++) {
|
|
||||||
scoreboard.createLine(new Sidebar.ScoreboardLine("id" + i, "Hey guys " + i, i));
|
|
||||||
}
|
|
||||||
scoreboard.addViewer(player);
|
|
||||||
scoreboard.updateLineContent("id3", "I HAVE BEEN UPDATED");
|
|
||||||
|
|
||||||
scoreboard.setTitle("test");*/
|
|
||||||
|
|
||||||
{
|
{
|
||||||
/*AdvancementManager advancementManager = MinecraftServer.getAdvancementManager();
|
/*AdvancementManager advancementManager = MinecraftServer.getAdvancementManager();
|
||||||
AdvancementRoot root = new AdvancementRoot(ColoredText.of("title"), ColoredText.of(ChatColor.BLUE + "description"),
|
AdvancementRoot root = new AdvancementRoot(ColoredText.of("title"), ColoredText.of(ChatColor.BLUE + "description"),
|
||||||
|
@ -248,100 +194,21 @@ public class PlayerInit {
|
||||||
});
|
});
|
||||||
|
|
||||||
player.addEventCallback(PlayerSpawnEvent.class, event -> {
|
player.addEventCallback(PlayerSpawnEvent.class, event -> {
|
||||||
player.setGameMode(GameMode.CREATIVE);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
player.teleport(new Position(0, 73f, 0));
|
player.teleport(new Position(0, 73f, 0));
|
||||||
|
|
||||||
player.getInventory().addItemStack(new ItemStack(Material.STONE, (byte) 1));
|
Data data = new DataImpl();
|
||||||
|
data.set("test", 5, Integer.class);
|
||||||
player.setGlowing(true);
|
ItemStack itemStack = new ItemStack(Material.NETHERITE_PICKAXE, (byte) 1);
|
||||||
ItemStack stone = new ItemStack(Material.DIAMOND_SWORD, (byte) 127);
|
itemStack.setEnchantment(Enchantment.EFFICIENCY, (short) 5);
|
||||||
stone.setEnchantment(Enchantment.AQUA_AFFINITY, (short) 1);
|
itemStack.setData(data);
|
||||||
stone.addAttribute(new ItemAttribute(UUID.randomUUID(),
|
player.getInventory().addItemStack(itemStack);
|
||||||
"test_name",
|
|
||||||
Attribute.ATTACK_DAMAGE, AttributeOperation.ADDITION, 50, AttributeSlot.MAINHAND));
|
|
||||||
player.getInventory().addItemStack(stone);
|
|
||||||
/*for (int i = 0; i < 9; i++) {
|
|
||||||
player.getInventory().setItemStack(i, new ItemStack(Material.STONE, (byte) 127));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
{
|
|
||||||
Sidebar sidebar = new Sidebar("title");
|
|
||||||
sidebar.createLine(new Sidebar.ScoreboardLine("id1", ColoredText.of("text"), 1));
|
|
||||||
sidebar.addViewer(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
ItemStack map = new ItemStack(Material.FILLED_MAP, (byte) 1);
|
|
||||||
MapMeta mapMeta = (MapMeta) map.getItemMeta();
|
|
||||||
mapMeta.setMapId(1);
|
|
||||||
//player.getInventory().setItemStack(0, map);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ItemStack item = new ItemStack(Material.STONE_SWORD, (byte) 1);
|
|
||||||
item.setDisplayName(ColoredText.of("Item name"));
|
|
||||||
item.setDamage(5);
|
|
||||||
//item.getLore().add(ColoredText.of(ChatColor.RED + "a lore line " + ChatColor.BLACK + " BLACK"));
|
|
||||||
//item.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
|
||||||
//item.setEnchantment(Enchantment.SHARPNESS, (short) 50);
|
|
||||||
//player.getInventory().addItemStack(item);
|
|
||||||
|
|
||||||
//player.setHelmet(new ItemStack(Material.DIAMOND_HELMET, (byte) 1));
|
|
||||||
|
|
||||||
//inventory.addItemStack(item.clone());
|
|
||||||
//player.openInventory(inventory);
|
|
||||||
|
|
||||||
//player.getInventory().addItemStack(new ItemStack(Material.STONE, (byte) 100));
|
|
||||||
|
|
||||||
{
|
|
||||||
/*EntityItemFrame entityItemFrame = new EntityItemFrame(new Position(-5, 36, 9, 0, 180), EntityItemFrame.ItemFrameOrientation.DOWN);
|
|
||||||
entityItemFrame.setNoGravity(true);
|
|
||||||
entityItemFrame.setInstance(player.getInstance());
|
|
||||||
entityItemFrame.setItemStack(item);*/
|
|
||||||
}
|
|
||||||
|
|
||||||
Instance instance = player.getInstance();
|
|
||||||
WorldBorder worldBorder = instance.getWorldBorder();
|
|
||||||
//worldBorder.setDiameter(30);
|
|
||||||
|
|
||||||
//EntityBoat entityBoat = new EntityBoat(player.getPosition());
|
|
||||||
//entityBoat.setInstance(player.getInstance());
|
|
||||||
//entityBoat.addPassenger(player);
|
|
||||||
|
|
||||||
//player.getInventory().addItemStack(new ItemStack(Material.DIAMOND_CHESTPLATE, (byte) 1));
|
|
||||||
|
|
||||||
/*TeamManager teamManager = Main.getTeamManager();
|
|
||||||
Team team = teamManager.createTeam(getUsername());
|
|
||||||
team.setTeamDisplayName("display");
|
|
||||||
team.setPrefix("[Test] ");
|
|
||||||
team.setTeamColor(ChatColor.RED);
|
|
||||||
setTeam(team);
|
|
||||||
|
|
||||||
setAttribute(Attribute.MAX_HEALTH, 10);
|
|
||||||
heal();
|
|
||||||
|
|
||||||
BelowNameScoreboard belowNameScoreboard = new BelowNameScoreboard();
|
|
||||||
setBelowNameScoreboard(belowNameScoreboard);
|
|
||||||
belowNameScoreboard.updateScore(this, 50);*/
|
|
||||||
|
|
||||||
//player.sendLegacyMessage("&aIm &bHere", '&');
|
|
||||||
//player.sendMessage(ColoredText.of("{#ff55ff}" + ChatColor.RESET + "test"));
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
player.addEventCallback(PlayerRespawnEvent.class, event -> {
|
player.addEventCallback(PlayerRespawnEvent.class, event -> {
|
||||||
event.setRespawnPosition(new Position(0f, 75f, 0f));
|
event.setRespawnPosition(new Position(0f, 75f, 0f));
|
||||||
});
|
});
|
||||||
|
|
||||||
player.addEventCallback(PlayerStartDiggingEvent.class, event -> {
|
|
||||||
//event.setCancelled(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
player.addEventCallback(PlayerCommandEvent.class, event -> {
|
|
||||||
System.out.println("COMMAND EVENT");
|
|
||||||
});
|
|
||||||
|
|
||||||
player.addEventCallback(PlayerUseItemEvent.class, useEvent -> {
|
player.addEventCallback(PlayerUseItemEvent.class, useEvent -> {
|
||||||
player.sendMessage("Using item in air: " + useEvent.getItemStack().getMaterial());
|
player.sendMessage("Using item in air: " + useEvent.getItemStack().getMaterial());
|
||||||
});
|
});
|
||||||
|
@ -351,20 +218,6 @@ public class PlayerInit {
|
||||||
player.sendMessage("Using item on block: " + useEvent.getItemStack().getMaterial() + " at " + useEvent.getPosition() + " on face " + useEvent.getBlockFace());
|
player.sendMessage("Using item on block: " + useEvent.getItemStack().getMaterial() + " at " + useEvent.getPosition() + " on face " + useEvent.getBlockFace());
|
||||||
});
|
});
|
||||||
|
|
||||||
player.addEventCallback(ItemUpdateStateEvent.class, event -> {
|
|
||||||
System.out.println("ITEM UPDATE STATE");
|
|
||||||
});
|
|
||||||
|
|
||||||
player.addEventCallback(PlayerPreEatEvent.class, event -> {
|
|
||||||
ItemStack itemStack = event.getFoodItem();
|
|
||||||
Material material = itemStack.getMaterial();
|
|
||||||
event.setEatingTime(material == Material.PORKCHOP ? 100 : 1000);
|
|
||||||
});
|
|
||||||
|
|
||||||
player.addEventCallback(PlayerEatEvent.class, event -> {
|
|
||||||
System.out.println("PLAYER EAT EVENT");
|
|
||||||
});
|
|
||||||
|
|
||||||
player.addEventCallback(PlayerChunkUnloadEvent.class, event -> {
|
player.addEventCallback(PlayerChunkUnloadEvent.class, event -> {
|
||||||
Instance instance = player.getInstance();
|
Instance instance = player.getInstance();
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import net.minestom.server.command.CommandSender;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple shutdown command
|
* A simple shutdown command.
|
||||||
*/
|
*/
|
||||||
public class ShutdownCommand implements CommandProcessor {
|
public class ShutdownCommand implements CommandProcessor {
|
||||||
|
|
||||||
|
@ -28,6 +28,6 @@ public class ShutdownCommand implements CommandProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasAccess(Player player) {
|
public boolean hasAccess(Player player) {
|
||||||
return player.getPermissionLevel() >= 4;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,7 @@ import net.minestom.server.command.CommandSender;
|
||||||
import net.minestom.server.command.builder.Arguments;
|
import net.minestom.server.command.builder.Arguments;
|
||||||
import net.minestom.server.command.builder.Command;
|
import net.minestom.server.command.builder.Command;
|
||||||
import net.minestom.server.command.builder.arguments.Argument;
|
import net.minestom.server.command.builder.arguments.Argument;
|
||||||
import net.minestom.server.command.builder.arguments.ArgumentType;
|
import net.minestom.server.command.builder.arguments.minecraft.ArgumentNbtTag;
|
||||||
import net.minestom.server.item.ItemStack;
|
|
||||||
|
|
||||||
public class TestCommand extends Command {
|
public class TestCommand extends Command {
|
||||||
|
|
||||||
|
@ -18,12 +17,11 @@ public class TestCommand extends Command {
|
||||||
//addSyntax(this::execute, dynamicWord);
|
//addSyntax(this::execute, dynamicWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
Argument test = ArgumentType.ItemStack("test");
|
Argument test = new ArgumentNbtTag("test");
|
||||||
|
|
||||||
addSyntax((source, args) -> {
|
addSyntax((source, args) -> {
|
||||||
|
System.out.println("arg: "+args.getNBT("test").getClass());
|
||||||
System.out.println("SUCCESS");
|
System.out.println("SUCCESS");
|
||||||
ItemStack itemStack = args.getItemStack("test");
|
|
||||||
source.asPlayer().getInventory().addItemStack(itemStack);
|
|
||||||
}, test);
|
}, test);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue