manual reset on left click
This commit is contained in:
		
					parent
					
						
							
								482fc1e22d
							
						
					
				
			
			
				commit
				
					
						d4a6b64ae5
					
				
			
		
					 3 changed files with 51 additions and 42 deletions
				
			
		|  | @ -503,6 +503,7 @@ public class MinecleanerArena { | |||
| 
 | ||||
|                 currentMinecleanerGame.flag(x, y); | ||||
|                 if (currentMinecleanerGame.gameover) { | ||||
|                     arenaStatus = ArenaStatus.COMPLETED; | ||||
|                     plugin.getManager().handleGameover(player, this, true); | ||||
|                 } | ||||
|                 if (cell.isFlagged() == true) { | ||||
|  | @ -534,6 +535,7 @@ public class MinecleanerArena { | |||
|                 setBlockForCellType(x, y, cell); | ||||
| 
 | ||||
|                 if (currentMinecleanerGame.gameover) { | ||||
|                     arenaStatus = ArenaStatus.COMPLETED; | ||||
|                     plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded())); | ||||
|                 } else { | ||||
|                     updateIngameInfoTexts(); | ||||
|  | @ -723,10 +725,13 @@ public class MinecleanerArena { | |||
|         return currentGameStartTime; | ||||
|     } | ||||
| 
 | ||||
|     public Game getCurrentMinecleanerGame() { return currentMinecleanerGame; } | ||||
| 
 | ||||
|     public int getWidthIndex() { | ||||
|         return widthIndex; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private int getRotationYaw() { | ||||
|         return switch (orientation) { | ||||
|             case EAST -> 90; | ||||
|  |  | |||
|  | @ -38,48 +38,51 @@ public class MinecleanerListener implements Listener { | |||
|             if(arena != null) { | ||||
|                 e.setCancelled(true); | ||||
|                 MinecleanerArena arenaClicked = plugin.getArenaList().getArenaAtBlock(block); | ||||
|                 if(arenaClicked == arena && arena.getArenaStatus() == ArenaStatus.PLAYING) { | ||||
|                     int d0x = arena.getOrientation().getModX(); | ||||
|                     int d0z = arena.getOrientation().getModZ(); | ||||
|                     int d1x = -d0z; | ||||
|                     int d1z = d0x; | ||||
|                 boolean hasRightClicked = false; | ||||
|                 if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { | ||||
|                     hasRightClicked = true; | ||||
|                 } | ||||
|                 if(!arenaClicked.getCurrentMinecleanerGame().gameover) { | ||||
|                     if(arenaClicked == arena && arena.getArenaStatus() == ArenaStatus.PLAYING) { | ||||
|                         int d0x = arena.getOrientation().getModX(); | ||||
|                         int d0z = arena.getOrientation().getModZ(); | ||||
|                         int d1x = -d0z; | ||||
|                         int d1z = d0x; | ||||
| 
 | ||||
|                     if (e.getBlockFace() == arena.getOrientation()) { | ||||
|                         if (e.getBlockFace() == arena.getOrientation()) { | ||||
| 
 | ||||
|                         Player player = e.getPlayer(); | ||||
|                         RayTraceResult r2 = player.rayTraceBlocks(36.0); | ||||
|                             Player player = e.getPlayer(); | ||||
|                             RayTraceResult r2 = player.rayTraceBlocks(36.0); | ||||
| 
 | ||||
|                         if(r2 != null) { | ||||
|                             Vector hitPos = r2.getHitPosition(); | ||||
|                             Vector substract = new Vector(0.5, 0.5, 0.5); | ||||
|                             if(r2 != null) { | ||||
|                                 Vector hitPos = r2.getHitPosition(); | ||||
|                                 Vector substract = new Vector(0.5, 0.5, 0.5); | ||||
| 
 | ||||
|                             Location loc = hitPos.subtract(arena.getLocation().toVector()).subtract(substract).toLocation(player.getWorld()); //(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(); | ||||
|                             double dy = ly + 1.5;  | ||||
|                             double dz = -d1x * lx - d1z * lz + 1.5; | ||||
|                                 Location loc = hitPos.subtract(arena.getLocation().toVector()).subtract(substract).toLocation(player.getWorld()); //(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(); | ||||
|                                 double dy = ly + 1.5; | ||||
|                                 double dz = -d1x * lx - d1z * lz + 1.5; | ||||
| 
 | ||||
|                             double blockx = (dy / 3.0) * 9.0; | ||||
|                             double blockz = (dz / 3.0) * 9.0; | ||||
|                                 double blockx = (dy / 3.0) * 9.0; | ||||
|                                 double blockz = (dz / 3.0) * 9.0; | ||||
| 
 | ||||
|                             int blockxInt = (int) blockx; | ||||
|                             int blockzInt = (int) blockz; | ||||
|                             blockx -= blockxInt; | ||||
|                             blockz -= blockzInt; | ||||
|                                 int blockxInt = (int) blockx; | ||||
|                                 int blockzInt = (int) blockz; | ||||
|                                 blockx -= blockxInt; | ||||
|                                 blockz -= blockzInt; | ||||
| 
 | ||||
|                             boolean hasRightClicked = false; | ||||
|                             if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { | ||||
|                                 hasRightClicked = true; | ||||
|                                 if(blockzInt < arena.getArenaWidth() && blockxInt < arenaClicked.getArenaHeight()) { | ||||
|                                     plugin.getManager().handleFieldClick(e.getPlayer(), blockzInt, blockxInt, hasRightClicked); | ||||
|                                 } | ||||
|                                 //player.sendMessage("Arena click! " + blockxInt + " " + blockzInt + " Right Clicked: " + hasRightClicked); | ||||
|                             } | ||||
| 
 | ||||
|                             if(blockzInt < arena.getArenaWidth() && blockxInt < arenaClicked.getArenaHeight()) { | ||||
|                                 plugin.getManager().handleFieldClick(e.getPlayer(), blockzInt, blockxInt, hasRightClicked); | ||||
|                             } | ||||
|                             //player.sendMessage("Arena click! " + blockxInt + " " + blockzInt + " Right Clicked: " + hasRightClicked); | ||||
| 
 | ||||
|                         } | ||||
|                     } | ||||
|                 } else if(arenaClicked.hasPlayer() && arenaClicked.getArenaStatus() == ArenaStatus.COMPLETED && !hasRightClicked){ | ||||
|                     plugin.getManager().getSchedulerGameOver().cancel(); | ||||
|                     plugin.getManager().leaveArena(arenaClicked.getCurrentPlayer(), false); | ||||
|                 } | ||||
|             } else { | ||||
|                 arena = plugin.getArenaList().getArenaAtBlock(block); | ||||
|  |  | |||
|  | @ -5,7 +5,6 @@ import java.util.ArrayList; | |||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map.Entry; | ||||
| import java.util.Set; | ||||
| import java.util.UUID; | ||||
| import java.util.function.Consumer; | ||||
| import org.bukkit.Bukkit; | ||||
|  | @ -13,12 +12,11 @@ import org.bukkit.Material; | |||
| import org.bukkit.OfflinePlayer; | ||||
| import org.bukkit.Sound; | ||||
| import org.bukkit.World; | ||||
| import org.bukkit.enchantments.Enchantment; | ||||
| import org.bukkit.entity.Item; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.bukkit.event.inventory.InventoryType; | ||||
| import org.bukkit.inventory.Inventory; | ||||
| import org.bukkit.inventory.ItemStack; | ||||
| import org.bukkit.scheduler.BukkitTask; | ||||
| import org.jetbrains.annotations.NotNull; | ||||
| import com.google.common.base.Preconditions; | ||||
| import de.iani.cubesidestats.api.PlayerStatistics; | ||||
|  | @ -37,6 +35,7 @@ public class MinecleanerManager { | |||
|     private final MinecleanerPlugin plugin; | ||||
|     private final Inventory confirmPlayingInventory; | ||||
|     private final HashMap<Integer, String> sizes; | ||||
|     public BukkitTask schedulerGameOver; | ||||
| 
 | ||||
|     // Statistics | ||||
|     private final StatisticKey statisticsWonGamesTotal; | ||||
|  | @ -174,12 +173,12 @@ public class MinecleanerManager { | |||
|                 ps.increaseScore(sg, 1); | ||||
|             } | ||||
| 
 | ||||
|             Bukkit.getScheduler().runTaskLater(plugin, () -> { | ||||
|                 if(arena.getCurrentPlayer() == null) { | ||||
|                     arena.removePlayer();  | ||||
|                  } else { | ||||
|             schedulerGameOver = Bukkit.getScheduler().runTaskLater(plugin, () -> { | ||||
|                 if (arena.getCurrentPlayer() == null) { | ||||
|                     arena.removePlayer(); | ||||
|                 } else { | ||||
|                     leaveArena(player, false); | ||||
|                  } | ||||
|                 } | ||||
|             }, plugin.getManager().getSettingsValue("resettime", player) * 20L); | ||||
|             return; | ||||
|         } | ||||
|  | @ -235,7 +234,7 @@ public class MinecleanerManager { | |||
|             player.sendMessage(ChatColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) + ChatColor.YELLOW + " erfolgreich lösen!"); | ||||
|         } | ||||
| 
 | ||||
|         Bukkit.getScheduler().runTaskLater(plugin, () -> { | ||||
|         schedulerGameOver = Bukkit.getScheduler().runTaskLater(plugin, () -> { | ||||
|             if(arena.getCurrentPlayer() == null) { | ||||
|                arena.removePlayer();  | ||||
|             } else { | ||||
|  | @ -463,5 +462,7 @@ public class MinecleanerManager { | |||
|         return minecleanerAdditionalDisplaySettingKey; | ||||
|     } | ||||
| 
 | ||||
|     public SettingKey getMinecleanerResetTimeSettingKey() {return  minecleanerResetTimerSettingKey; } | ||||
|     public SettingKey getMinecleanerResetTimeSettingKey() {return minecleanerResetTimerSettingKey; } | ||||
| 
 | ||||
|     public BukkitTask getSchedulerGameOver() { return schedulerGameOver; } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue