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 de.lunarakai.minecleaner.game.BoardSize; | ||||
| import de.lunarakai.minecleaner.game.Game; | ||||
| import de.lunarakai.minecleaner.utils.MinecleanerHeads; | ||||
| 
 | ||||
| public class MinecleanerArena { | ||||
|     private final MinecleanerPlugin plugin; | ||||
|  | @ -36,6 +37,33 @@ public class MinecleanerArena { | |||
| 
 | ||||
|     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) { | ||||
|         this.plugin = plugin; | ||||
|         this.name = Preconditions.checkNotNull(arenaSection.getString("name")); | ||||
|  | @ -147,6 +175,11 @@ public class MinecleanerArena { | |||
| 
 | ||||
|                     blockdisplay.setTransformation(newTransform); | ||||
|                     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()); | ||||
|                 }); | ||||
|                 if(blockDisplay != null) { | ||||
|  | @ -195,9 +228,9 @@ public class MinecleanerArena { | |||
|             for(int fy = 0; fy < 9; fy++) { | ||||
|                 UUID blockDisplayUuid = blockDisplays[fx + fy * 9]; | ||||
|                 Entity blockDisplayEntity = blockDisplayUuid != null ? world.getEntity(blockDisplayUuid) : null; | ||||
|                 //if(blockDisplayEntity instanceof BlockDisplay blockDisplay) { | ||||
|                     blockDisplayEntity.remove(); // Null Pointer after restart | ||||
|                 //} | ||||
|                 if(blockDisplayEntity instanceof Display blockDisplay) { | ||||
|                     blockDisplayEntity.remove();  | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -48,26 +48,33 @@ public class MinecleanerListener implements Listener { | |||
|                         // kann null sein | ||||
| 
 | ||||
|                         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 | ||||
| 
 | ||||
|                         /* | ||||
|                          * TODO: | ||||
|                          * [row] [coloumn] results depend on player position (on some player pos it works as it should, on most not) | ||||
|                          *  | ||||
|                          */ | ||||
| 
 | ||||
|                         if(rayTraceResult != null) { | ||||
|                             Vector hitPos = rayTraceResult.getHitPosition(); | ||||
|                             Location loc = player.getLocation().add(hitPos).clone().subtract(arena.getLocation()).subtract(0.5, 0.5, 0.5); | ||||
|                         if(r2 != null) { | ||||
|                             Vector hitPos = r2.getHitPosition(); | ||||
|                             //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 ly = loc.getY(); | ||||
|                             double lz = loc.getZ(); | ||||
|                             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); | ||||
|                             double dz = -d1x * lx - d1z * lz + 1.5; | ||||
|                             double dz = -d1x * lx - d1z * lz + 2.0; // 1.5 | ||||
|                             player.sendMessage(ChatColor.GRAY + "dz: " + dz); | ||||
| 
 | ||||
|                             double blockx = (dy / 3.0) * 9.0; | ||||
|                             double blockz = (dz / 3.0) * 9.0; | ||||
| 
 | ||||
|                              | ||||
|                              | ||||
| 
 | ||||
|                             int blockxInt = (int) blockx; | ||||
|  | @ -75,6 +82,20 @@ public class MinecleanerListener implements Listener { | |||
|                             blockx -= blockxInt; | ||||
|                             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 + "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