From ced12fd20b5c73ba10b04a6ca9d72b4924632341 Mon Sep 17 00:00:00 2001 From: David Brotz Date: Sun, 18 Jan 2026 20:11:55 -0600 Subject: [PATCH] Prevent users fromn creating new planets with the same name as an existing planet. --- .../src/mekwars/admin/AdminMapPopupMenu.java | 25 +++++++++++++------ .../admin/AdminCreatePlanetCommand.java | 13 +++++++--- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/MekWarsClient/src/mekwars/admin/AdminMapPopupMenu.java b/MekWarsClient/src/mekwars/admin/AdminMapPopupMenu.java index f2ef6da8..f1406bc3 100644 --- a/MekWarsClient/src/mekwars/admin/AdminMapPopupMenu.java +++ b/MekWarsClient/src/mekwars/admin/AdminMapPopupMenu.java @@ -136,14 +136,23 @@ public void actionPerformed(ActionEvent ex) { public void actionPerformed(ActionEvent ex) { String planetName = JOptionPane.showInputDialog(mwclient.getGUIClient().getMainFrame(),"Planet Name?"); - if ( planetName == null || planetName.length() == 0 ) - return; + if (planetName != null && planetName.length() != 0) { + if (CampaignData.cd.getPlanetByName(planetName) != null) { + JOptionPane.showMessageDialog(mwclient.getGUIClient().getMainFrame(), + "Planet with name " + planetName + " already exists.", + "Unable to create planet", + JOptionPane.WARNING_MESSAGE + ); + } else { + mwclient.sendChat(GameHost.CAMPAIGN_PREFIX + "c admincreateplanet#" + + planetName + "#" + xcoord + "#" + ycoord); + mwclient.refreshData(); + mp.repaint(); + int id = CampaignData.cd.getPlanetByName(planetName).getId(); + new PlanetEditorDialog(mwclient, planetName, id); + } + } - mwclient.sendChat(GameHost.CAMPAIGN_PREFIX + "c admincreateplanet#"+planetName+"#"+xcoord+"#"+ycoord); - mwclient.refreshData(); - mp.repaint(); - int id = CampaignData.cd.getPlanetByName(planetName).getId(); - new PlanetEditorDialog(mwclient, planetName, id); } }); if ( userLevel >= mwclient.getData().getAccessLevel("AdminCreatePlanet") ) @@ -200,4 +209,4 @@ public void actionPerformed(ActionEvent ex) { }//end constructor -}//end AdminMapPopup \ No newline at end of file +}//end AdminMapPopup diff --git a/MekWarsServer/src/mekwars/server/campaign/commands/admin/AdminCreatePlanetCommand.java b/MekWarsServer/src/mekwars/server/campaign/commands/admin/AdminCreatePlanetCommand.java index a0a5e702..777cab7b 100644 --- a/MekWarsServer/src/mekwars/server/campaign/commands/admin/AdminCreatePlanetCommand.java +++ b/MekWarsServer/src/mekwars/server/campaign/commands/admin/AdminCreatePlanetCommand.java @@ -29,14 +29,15 @@ import mekwars.server.campaign.SHouse; import mekwars.server.campaign.SPlanet; import mekwars.server.campaign.commands.Command; - +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * @author Helge Richter * */ public class AdminCreatePlanetCommand implements Command { - + private static final Logger LOGGER = LogManager.getLogger(AdminCreatePlanetCommand.class); int accessLevel = IAuthenticator.ADMIN; String syntax = "Planet Name#Xcood#YCoord#"; public int getExecutionLevel(){return accessLevel;} @@ -61,7 +62,13 @@ public void process(StringTokenizer command,String Username) { HashMap flu = new HashMap(); flu.put(faction.getId(),100); SPlanet planet = new SPlanet(PlanetName, new Influences(flu), 0, xcood, ycood); - CampaignMain.cm.addPlanet(planet); + try { + CampaignMain.cm.addPlanet(planet); + } catch (Exception exception) { + LOGGER.error("Unable to create planet", exception); + CampaignMain.cm.toUser("Unable to create planet " + planet, Username, true); + return; + } planet.setOwner(null,faction,true); planet.setOriginalOwner(faction.getName()); planet.updated();