meh
This commit is contained in:
parent
3022a8b545
commit
c1832bc853
3 changed files with 129 additions and 10 deletions
|
|
@ -19,6 +19,7 @@ import org.joml.Vector3f;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import de.lunarakai.minecleaner.game.BoardSize;
|
import de.lunarakai.minecleaner.game.BoardSize;
|
||||||
import de.lunarakai.minecleaner.game.Game;
|
import de.lunarakai.minecleaner.game.Game;
|
||||||
|
import de.lunarakai.minecleaner.utils.MinecleanerHeads;
|
||||||
|
|
||||||
public class MinecleanerArena {
|
public class MinecleanerArena {
|
||||||
private final MinecleanerPlugin plugin;
|
private final MinecleanerPlugin plugin;
|
||||||
|
|
@ -36,6 +37,33 @@ public class MinecleanerArena {
|
||||||
|
|
||||||
private final Location tempLoc = new Location(null, 0, 0, 0);
|
private final Location tempLoc = new Location(null, 0, 0, 0);
|
||||||
|
|
||||||
|
// CUSTOM HEADS
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6048-minesweeper-0-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6047-minesweeper-1-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6046-minesweeper-2-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6045-minesweeper-3-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6044-minesweeper-4-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6043-minesweeper-5-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6042-minesweeper-6-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6041-minesweeper-7-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6040-minesweeper-8-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6039-minesweeper-flag-tile
|
||||||
|
// https://minecraft-heads.com/custom-heads/head/6038-minesweeper-unknown-tile
|
||||||
|
|
||||||
|
public static final MinecleanerHeads[] MINECLEANER_HEADS = {
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_0,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_1,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_2,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_3,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_4,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_5,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_6,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_7,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_8,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_FLAG,
|
||||||
|
MinecleanerHeads.MINESWEEPER_TILE_UNKNOWN,
|
||||||
|
};
|
||||||
|
|
||||||
public MinecleanerArena(MinecleanerPlugin plugin, ConfigurationSection arenaSection) {
|
public MinecleanerArena(MinecleanerPlugin plugin, ConfigurationSection arenaSection) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.name = Preconditions.checkNotNull(arenaSection.getString("name"));
|
this.name = Preconditions.checkNotNull(arenaSection.getString("name"));
|
||||||
|
|
@ -147,6 +175,11 @@ public class MinecleanerArena {
|
||||||
|
|
||||||
blockdisplay.setTransformation(newTransform);
|
blockdisplay.setTransformation(newTransform);
|
||||||
blockdisplay.setRotation(rotation + 90, 0);
|
blockdisplay.setRotation(rotation + 90, 0);
|
||||||
|
|
||||||
|
//MinecleanerHeads head = MinecleanerHeads.MINESWEEPER_TILE_UNKNOWN;
|
||||||
|
|
||||||
|
//blockdisplay.setBlock(MINECLEANER_HEADS[10].getHead().getType().createBlockData());
|
||||||
|
//blockdisplay.setBlock(head.getHead().clone().getType().createBlockData());
|
||||||
blockdisplay.setBlock(Material.BEDROCK.createBlockData());
|
blockdisplay.setBlock(Material.BEDROCK.createBlockData());
|
||||||
});
|
});
|
||||||
if(blockDisplay != null) {
|
if(blockDisplay != null) {
|
||||||
|
|
@ -195,9 +228,9 @@ public class MinecleanerArena {
|
||||||
for(int fy = 0; fy < 9; fy++) {
|
for(int fy = 0; fy < 9; fy++) {
|
||||||
UUID blockDisplayUuid = blockDisplays[fx + fy * 9];
|
UUID blockDisplayUuid = blockDisplays[fx + fy * 9];
|
||||||
Entity blockDisplayEntity = blockDisplayUuid != null ? world.getEntity(blockDisplayUuid) : null;
|
Entity blockDisplayEntity = blockDisplayUuid != null ? world.getEntity(blockDisplayUuid) : null;
|
||||||
//if(blockDisplayEntity instanceof BlockDisplay blockDisplay) {
|
if(blockDisplayEntity instanceof Display blockDisplay) {
|
||||||
blockDisplayEntity.remove(); // Null Pointer after restart
|
blockDisplayEntity.remove();
|
||||||
//}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,21 +48,28 @@ public class MinecleanerListener implements Listener {
|
||||||
// kann null sein
|
// kann null sein
|
||||||
|
|
||||||
Player player = e.getPlayer();
|
Player player = e.getPlayer();
|
||||||
RayTraceResult rayTraceResult = player.getWorld().rayTraceBlocks(player.getEyeLocation(), player.getEyeLocation().getDirection(), 64.0);
|
//RayTraceResult rayTraceResult = player.getWorld().rayTraceBlocks(player.getEyeLocation(), player.getEyeLocation().getDirection(), 64.0);
|
||||||
|
RayTraceResult r2 = player.rayTraceBlocks(64.0);
|
||||||
|
|
||||||
//Location loc = e.getInteractionPoint().clone().subtract(arena.getLocation()).subtract(0.5, 0.5, 0.5); // null on left-click
|
//Location loc = e.getInteractionPoint().clone().subtract(arena.getLocation()).subtract(0.5, 0.5, 0.5); // null on left-click
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO:
|
||||||
|
* [row] [coloumn] results depend on player position (on some player pos it works as it should, on most not)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
if(rayTraceResult != null) {
|
if(r2 != null) {
|
||||||
Vector hitPos = rayTraceResult.getHitPosition();
|
Vector hitPos = r2.getHitPosition();
|
||||||
Location loc = player.getLocation().add(hitPos).clone().subtract(arena.getLocation()).subtract(0.5, 0.5, 0.5);
|
//Vector hitPos = rayTraceResult.getHitPosition();
|
||||||
|
Location loc = player.getLocation().add(hitPos.subtract(arena.getLocation().toVector())).clone().subtract(arena.getLocation()).subtract(0.5, 0.5, 0.5); // substract 0.5, 0.5, 0.5
|
||||||
double lx = loc.getX();
|
double lx = loc.getX();
|
||||||
double ly = loc.getY();
|
double ly = loc.getY();
|
||||||
double lz = loc.getZ();
|
double lz = loc.getZ();
|
||||||
player.sendMessage(ChatColor.GRAY + "lx: " + lx + " ,ly: " + ly + " ,lz: " + lz);
|
player.sendMessage(ChatColor.GRAY + "lx: " + lx + " ,ly: " + ly + " ,lz: " + lz);
|
||||||
double dy = ly + 1.5;
|
double dy = ly + 2.5; // 1.5
|
||||||
player.sendMessage(ChatColor.GRAY + "dy: " + dy);
|
player.sendMessage(ChatColor.GRAY + "dy: " + dy);
|
||||||
double dz = -d1x * lx - d1z * lz + 1.5;
|
double dz = -d1x * lx - d1z * lz + 2.0; // 1.5
|
||||||
player.sendMessage(ChatColor.GRAY + "dz: " + dz);
|
player.sendMessage(ChatColor.GRAY + "dz: " + dz);
|
||||||
|
|
||||||
double blockx = (dy / 3.0) * 9.0;
|
double blockx = (dy / 3.0) * 9.0;
|
||||||
|
|
@ -75,6 +82,20 @@ public class MinecleanerListener implements Listener {
|
||||||
blockx -= blockxInt;
|
blockx -= blockxInt;
|
||||||
blockz -= blockzInt;
|
blockz -= blockzInt;
|
||||||
|
|
||||||
|
/*
|
||||||
|
if(lx < 0) {
|
||||||
|
blockxInt = blockxInt - (-blockxInt);
|
||||||
|
} else {
|
||||||
|
blockxInt = blockxInt - blockxInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lz < 0) {
|
||||||
|
blockzInt = blockzInt - (-blockzInt);
|
||||||
|
} else {
|
||||||
|
blockzInt = blockzInt - blockzInt;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
player.sendMessage(ChatColor.GRAY + "blockx: " + blockx + " ,blockz: " + blockz);
|
player.sendMessage(ChatColor.GRAY + "blockx: " + blockx + " ,blockz: " + blockz);
|
||||||
player.sendMessage(ChatColor.GRAY + "blockxInt: " + blockxInt + " ,blockzInt: " + blockzInt);
|
player.sendMessage(ChatColor.GRAY + "blockxInt: " + blockxInt + " ,blockzInt: " + blockzInt);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
package de.lunarakai.minecleaner.utils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.inventory.meta.SkullMeta;
|
||||||
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
||||||
|
import com.destroystokyo.paper.profile.ProfileProperty;
|
||||||
|
|
||||||
|
public enum MinecleanerHeads {
|
||||||
|
MINESWEEPER_TILE_0("38206373-5653-4431-85aa-6276f3f9a046", "Minesweeper Tile 0", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzRjMjg0YTRlOTc0MDA1ZWE4ZDFkNGQwNjc0ZWMwODk0ZWZkOGY2ZGQwMjQ4NjM5YTZjZmE5NGY4NTM4OCJ9fX0="),
|
||||||
|
MINESWEEPER_TILE_1("dafc2272-0615-4a1d-ac16-06deeffe81c3", "Minesweeper Tile 1", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjdmYWM3MWUzNmQ1MGExYWQyZTJjMTBlMzJlMGM1OWVlZGVmYjBkMzU0NDZhOGZiNDg0ODEzOGZlMjZmYzkifX19"),
|
||||||
|
MINESWEEPER_TILE_2("79db3710-fa22-4e53-8058-e15fb60333ee", "Minesweeper Tile 2", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQ5Njg5NTViZDk0ODcwODA0MWUxMmIxNjRhZGZjZGI0NjM5OWMyZDM4MTA1OWVkNzFjZTc0YWUyNGY4ZGYifX19"),
|
||||||
|
MINESWEEPER_TILE_3("f09ec6e9-9bd2-4d4f-b99e-049fa173f9a7", "Minesweeper Tile 3", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWY2NzhjZmNjNGVlYjI1OWQ4ZTU3YjI2ZjRmNmEzNWE3NmQ3NDM3MDQzYmU2YzIzYWU4NTVjNDdjOGEyZTkifX19"),
|
||||||
|
MINESWEEPER_TILE_4("ce566d7a-0e6e-4fb4-8d16-2a372500e427", "Minesweeper Tile 4", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmI2OTcxYWJiMThiY2E5ZmFmYWFkOWVkNWExNTk2MTMyYmVjY2ZmYjg4YTMxYzgyOTMyMGM4NjdlZTQ3NyJ9fX0="),
|
||||||
|
MINESWEEPER_TILE_5("f3c15345-3bc1-4bf5-ba40-7f110a4d45e6", "Minesweeper Tile 5", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzYyMDZlNDc2MTRjOGY5ODM0MTNkZWUzMzJmMmYzMmU4ZGEzN2ZhNTdjNGNlYmExZDE0YjE2NDNiMjU5NTcifX19"),
|
||||||
|
MINESWEEPER_TILE_6("c7cfbda5-4039-417f-8e30-173658315b0d", "Minesweeper Tile 6", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjZmOTdlNTYzZDg1ZGM0ZDczODcxZDRjZGZjYzI2ZDhjZDQ0ZTg5ZmFmYjE1MDRjOGQ5YTJhYzVhNTZjIn19fQ=="),
|
||||||
|
MINESWEEPER_TILE_7("4d5502a9-8edd-4815-af45-5110124b9f08", "Minesweeper Tile 7", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODdlZjYxODVhZGQ0MTk3MzU3OTNjOGMyYTg0N2Q5YzRlMzkxYTJjNWI5YjJlYzI2MmNlYTk1NTc1YjBkMCJ9fX0="),
|
||||||
|
MINESWEEPER_TILE_8("168c915e-87c9-4c14-a297-3aafa692d3a5", "Minesweeper Tile 8", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODI3MWNkZDM4ZThhN2M3NDIzMWFmOGExNTU2MThmNGZmY2I3ZjkxN2U4ODI2YzJiM2MxODM2ZDFiZDExNmQzIn19fQ=="),
|
||||||
|
MINESWEEPER_TILE_FLAG("ae508256-8113-463c-adce-877bad2227c0", "Minesweeper Tile Flag", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg0YTdmY2IyNDc0MDZlMzUzYTM2ZTU1NmFkMTk1NzhjM2ViZTRlMTU1ODFkYjEwNmQxNWE1Y2I5ZGFkIn19fQ=="),
|
||||||
|
MINESWEEPER_TILE_UNKNOWN("2fe94bff-c5c1-410e-8c99-cf713c850930", "Minesweeper Tile Unknown", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzdmMWVhMjZlYTVlNjg1YjJmMmY4NzY0OTAxYmU5MTRmZTM1NTU5Y2IxZWNiMWVmMzRiN2U0NmFiYzhlZTU0MCJ9fX0="),
|
||||||
|
;
|
||||||
|
|
||||||
|
private ItemStack head;
|
||||||
|
|
||||||
|
private MinecleanerHeads(String ownerUUIDString, String ownerName, String texturesProperty) {
|
||||||
|
head = createHead(UUID.fromString(ownerUUIDString), ownerName, texturesProperty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getHead() {
|
||||||
|
return new ItemStack(head);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getHead(String displayName) {
|
||||||
|
return getHead(displayName, (String[]) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getHead(String displayName, String... lore) {
|
||||||
|
ItemStack stack = getHead();
|
||||||
|
ItemMeta meta = stack.getItemMeta();
|
||||||
|
meta.setDisplayName(displayName);
|
||||||
|
if (lore != null && lore.length > 0) {
|
||||||
|
meta.setLore(Arrays.asList(lore));
|
||||||
|
}
|
||||||
|
stack.setItemMeta(meta);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemStack createHead(UUID ownerUUID, String ownerName, String texturesProperty) {
|
||||||
|
if (ownerName == null) {
|
||||||
|
ownerName = ownerUUID.toString().substring(0, 16);
|
||||||
|
}
|
||||||
|
ItemStack stack = new ItemStack(Material.PLAYER_HEAD);
|
||||||
|
SkullMeta meta = (SkullMeta) stack.getItemMeta();
|
||||||
|
PlayerProfile profile = Bukkit.createProfile(ownerUUID, ownerName);
|
||||||
|
profile.setProperty(new ProfileProperty("textures", texturesProperty));
|
||||||
|
meta.setPlayerProfile(profile);
|
||||||
|
stack.setItemMeta(meta);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue