tobaJK

fences

Oct 13th, 2018
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.95 KB | None | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P aCis_gameserver
  3. Index: java/net/sf/l2j/gameserver/data/manager/FenceManager.java
  4. ===================================================================
  5. --- java/net/sf/l2j/gameserver/data/manager/FenceManager.java   (revision 3)
  6. +++ java/net/sf/l2j/gameserver/data/manager/FenceManager.java   (working copy)
  7. @@ -1,9 +1,14 @@
  8.  package net.sf.l2j.gameserver.data.manager;
  9.  
  10. +import java.sql.Connection;
  11. +import java.sql.PreparedStatement;
  12. +import java.sql.ResultSet;
  13. +import java.sql.SQLException;
  14.  import java.util.ArrayList;
  15.  import java.util.List;
  16.  import java.util.logging.Logger;
  17.  
  18. +import net.sf.l2j.L2DatabaseFactory;
  19.  import net.sf.l2j.gameserver.geoengine.GeoEngine;
  20.  import net.sf.l2j.gameserver.model.actor.instance.Fence;
  21.  
  22. @@ -12,6 +17,8 @@
  23.   */
  24.  public class FenceManager
  25.  {
  26. +   private static final String insertQuery = "INSERT INTO fences (x,y,z,type,sizex,sizey,height) VALUES(?,?,?,?,?,?,?)";
  27. +   private static final String delQuery = "DELETE FROM fences WHERE x=? AND y=? AND z=? AND type=? AND sizex=? AND sizey=?";
  28.     private static final Logger LOG = Logger.getLogger(FenceManager.class.getName());
  29.    
  30.     /**
  31. @@ -50,8 +57,27 @@
  32.    
  33.     protected FenceManager()
  34.     {
  35. +       load();
  36.     }
  37.    
  38. +   protected void load()
  39. +   {
  40. +       try (Connection con = L2DatabaseFactory.getInstance().getConnection();
  41. +           PreparedStatement statement = con.prepareStatement("SELECT * FROM fences");
  42. +           ResultSet rs = statement.executeQuery())
  43. +       {
  44. +           while (rs.next())
  45. +           {
  46. +               final int x = rs.getInt("x"), y = rs.getInt("y"), z = rs.getInt("z"), type = rs.getInt("type"), sizeX = rs.getInt("sizex"), sizeY = rs.getInt("sizey"), height = rs.getInt("height");
  47. +               addFence(x, y, z, type, sizeX, sizeY, height, false);
  48. +           }
  49. +       }
  50. +       catch (SQLException e)
  51. +       {
  52. +           e.printStackTrace();
  53. +       }
  54. +   }
  55. +  
  56.     /**
  57.      * Returns list of all fences spawned in the world.
  58.      * @return List<Fence> : List of all fences.
  59. @@ -70,9 +96,10 @@
  60.      * @param sizeX : Size of the {@link Fence} in X direction.
  61.      * @param sizeY : Size of the {@link Fence} in Y direction.
  62.      * @param height : The height of {@link Fence}.
  63. +    * @param store into database
  64.      * @return The newly created Fence object.
  65.      */
  66. -   public final Fence addFence(int x, int y, int z, int type, int sizeX, int sizeY, int height)
  67. +   public final Fence addFence(int x, int y, int z, int type, int sizeX, int sizeY, int height, boolean store)
  68.     {
  69.         final FenceSize fsx = getFenceSize(sizeX);
  70.         final FenceSize fsy = getFenceSize(sizeY);
  71. @@ -114,15 +141,39 @@
  72.         GeoEngine.getInstance().addGeoObject(fence);
  73.         _fences.add(fence);
  74.        
  75. +       if (store)
  76. +           updateDb(fence, height, store); // using height before the calculation in order to be calculated correctly on loading case
  77.         return fence;
  78.     }
  79.    
  80. +   private static void updateDb(Fence fence, int height, boolean store)
  81. +   {
  82. +       try (Connection con = L2DatabaseFactory.getInstance().getConnection();
  83. +           PreparedStatement statement = con.prepareStatement(store ? insertQuery : delQuery))
  84. +       {
  85. +           statement.setInt(1, fence.getX());
  86. +           statement.setInt(2, fence.getY());
  87. +           statement.setInt(3, fence.getZ());
  88. +           statement.setInt(4, fence.getType());
  89. +           statement.setInt(5, fence.getSizeX());
  90. +           statement.setInt(6, fence.getSizeY());
  91. +           if (store)
  92. +               statement.setInt(7, height);
  93. +           statement.executeUpdate();
  94. +       }
  95. +       catch (SQLException e)
  96. +       {
  97. +           e.printStackTrace();
  98. +       }
  99. +   }
  100. +  
  101.     /**
  102.      * Remove given {@link Fence} from the world.
  103.      * @param fence : {@link Fence} to be removed.
  104.      */
  105.     public final void removeFence(Fence fence)
  106.     {
  107. +       updateDb(fence, fence.getHeight(), false);
  108.         // remove fence from world
  109.         fence.decayMe();
  110.        
  111. Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java
  112. ===================================================================
  113. --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (revision 3)
  114. +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (working copy)
  115. @@ -217,7 +217,7 @@
  116.                 if (st.hasMoreTokens())
  117.                     height = Math.min(Integer.parseInt(st.nextToken()), 3);
  118.                
  119. -               FenceManager.getInstance().addFence(activeChar.getX(), activeChar.getY(), activeChar.getZ(), type, sizeX, sizeY, height);
  120. +               FenceManager.getInstance().addFence(activeChar.getX(), activeChar.getY(), activeChar.getZ(), type, sizeX, sizeY, height,true);
  121.                
  122.                 listFences(activeChar);
  123.             }
  124. Index: java/net/sf/l2j/gameserver/GameServer.java
  125. ===================================================================
  126. --- java/net/sf/l2j/gameserver/GameServer.java  (revision 8)
  127. +++ java/net/sf/l2j/gameserver/GameServer.java  (working copy)
  128. @@ -29,6 +29,7 @@
  129.  import net.sf.l2j.gameserver.data.manager.CoupleManager;
  130.  import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
  131.  import net.sf.l2j.gameserver.data.manager.DerbyTrackManager;
  132. +import net.sf.l2j.gameserver.data.manager.FenceManager;
  133.  import net.sf.l2j.gameserver.data.manager.FishingChampionshipManager;
  134.  import net.sf.l2j.gameserver.data.manager.LotteryManager;
  135.  import net.sf.l2j.gameserver.data.manager.MovieMakerManager;
  136. @@ -268,6 +269,8 @@
  137.         DerbyTrackManager.getInstance();
  138.         LotteryManager.getInstance();
  139.        
  140. +       StringUtil.printSection("Fence System");
  141. +       LOGGER.info("Fence: Loaded {} fences.", FenceManager.getInstance().getFences().size());
  142.         if (Config.ALLOW_WEDDING)
  143.             CoupleManager.getInstance();
  144.  
  145. ### Eclipse Workspace Patch 1.0
  146. #P aCis_datapack
  147. Index: sql/fences.sql
  148. ===================================================================
  149. --- sql/fences.sql  (revision 0)
  150. +++ sql/fences.sql  (working copy)
  151. @@ -0,0 +1,11 @@
  152. +DROP TABLE IF EXISTS `fences`;
  153. +CREATE TABLE `fences` (
  154. +  `x` INT NOT NULL DEFAULT'0',
  155. +  `y` INT NOT NULL DEFAULT '0',
  156. +  `z` INT NOT NULL DEFAULT '0',
  157. +  `type` INT NOT NULL DEFAULT '0',
  158. +  `sixex` INT NOT NULL DEFAULT '0',
  159. +  `sizey` INT NOT NULL DEFAULT '0',
  160. +  `height` INT NOT NULL DEFAULT '0'
  161. +);
  162. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment