Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/data/manager/FenceManager.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/data/manager/FenceManager.java (revision 3)
- +++ java/net/sf/l2j/gameserver/data/manager/FenceManager.java (working copy)
- @@ -1,9 +1,14 @@
- package net.sf.l2j.gameserver.data.manager;
- +import java.sql.Connection;
- +import java.sql.PreparedStatement;
- +import java.sql.ResultSet;
- +import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.logging.Logger;
- +import net.sf.l2j.L2DatabaseFactory;
- import net.sf.l2j.gameserver.geoengine.GeoEngine;
- import net.sf.l2j.gameserver.model.actor.instance.Fence;
- @@ -12,6 +17,8 @@
- */
- public class FenceManager
- {
- + private static final String insertQuery = "INSERT INTO fences (x,y,z,type,sizex,sizey,height) VALUES(?,?,?,?,?,?,?)";
- + private static final String delQuery = "DELETE FROM fences WHERE x=? AND y=? AND z=? AND type=? AND sizex=? AND sizey=?";
- private static final Logger LOG = Logger.getLogger(FenceManager.class.getName());
- /**
- @@ -50,8 +57,27 @@
- protected FenceManager()
- {
- + load();
- }
- + protected void load()
- + {
- + try (Connection con = L2DatabaseFactory.getInstance().getConnection();
- + PreparedStatement statement = con.prepareStatement("SELECT * FROM fences");
- + ResultSet rs = statement.executeQuery())
- + {
- + while (rs.next())
- + {
- + 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");
- + addFence(x, y, z, type, sizeX, sizeY, height, false);
- + }
- + }
- + catch (SQLException e)
- + {
- + e.printStackTrace();
- + }
- + }
- +
- /**
- * Returns list of all fences spawned in the world.
- * @return List<Fence> : List of all fences.
- @@ -70,9 +96,10 @@
- * @param sizeX : Size of the {@link Fence} in X direction.
- * @param sizeY : Size of the {@link Fence} in Y direction.
- * @param height : The height of {@link Fence}.
- + * @param store into database
- * @return The newly created Fence object.
- */
- - public final Fence addFence(int x, int y, int z, int type, int sizeX, int sizeY, int height)
- + public final Fence addFence(int x, int y, int z, int type, int sizeX, int sizeY, int height, boolean store)
- {
- final FenceSize fsx = getFenceSize(sizeX);
- final FenceSize fsy = getFenceSize(sizeY);
- @@ -114,15 +141,39 @@
- GeoEngine.getInstance().addGeoObject(fence);
- _fences.add(fence);
- + if (store)
- + updateDb(fence, height, store); // using height before the calculation in order to be calculated correctly on loading case
- return fence;
- }
- + private static void updateDb(Fence fence, int height, boolean store)
- + {
- + try (Connection con = L2DatabaseFactory.getInstance().getConnection();
- + PreparedStatement statement = con.prepareStatement(store ? insertQuery : delQuery))
- + {
- + statement.setInt(1, fence.getX());
- + statement.setInt(2, fence.getY());
- + statement.setInt(3, fence.getZ());
- + statement.setInt(4, fence.getType());
- + statement.setInt(5, fence.getSizeX());
- + statement.setInt(6, fence.getSizeY());
- + if (store)
- + statement.setInt(7, height);
- + statement.executeUpdate();
- + }
- + catch (SQLException e)
- + {
- + e.printStackTrace();
- + }
- + }
- +
- /**
- * Remove given {@link Fence} from the world.
- * @param fence : {@link Fence} to be removed.
- */
- public final void removeFence(Fence fence)
- {
- + updateDb(fence, fence.getHeight(), false);
- // remove fence from world
- fence.decayMe();
- Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (revision 3)
- +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java (working copy)
- @@ -217,7 +217,7 @@
- if (st.hasMoreTokens())
- height = Math.min(Integer.parseInt(st.nextToken()), 3);
- - FenceManager.getInstance().addFence(activeChar.getX(), activeChar.getY(), activeChar.getZ(), type, sizeX, sizeY, height);
- + FenceManager.getInstance().addFence(activeChar.getX(), activeChar.getY(), activeChar.getZ(), type, sizeX, sizeY, height,true);
- listFences(activeChar);
- }
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 8)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -29,6 +29,7 @@
- import net.sf.l2j.gameserver.data.manager.CoupleManager;
- import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
- import net.sf.l2j.gameserver.data.manager.DerbyTrackManager;
- +import net.sf.l2j.gameserver.data.manager.FenceManager;
- import net.sf.l2j.gameserver.data.manager.FishingChampionshipManager;
- import net.sf.l2j.gameserver.data.manager.LotteryManager;
- import net.sf.l2j.gameserver.data.manager.MovieMakerManager;
- @@ -268,6 +269,8 @@
- DerbyTrackManager.getInstance();
- LotteryManager.getInstance();
- + StringUtil.printSection("Fence System");
- + LOGGER.info("Fence: Loaded {} fences.", FenceManager.getInstance().getFences().size());
- if (Config.ALLOW_WEDDING)
- CoupleManager.getInstance();
- ### Eclipse Workspace Patch 1.0
- #P aCis_datapack
- Index: sql/fences.sql
- ===================================================================
- --- sql/fences.sql (revision 0)
- +++ sql/fences.sql (working copy)
- @@ -0,0 +1,11 @@
- +DROP TABLE IF EXISTS `fences`;
- +CREATE TABLE `fences` (
- + `x` INT NOT NULL DEFAULT'0',
- + `y` INT NOT NULL DEFAULT '0',
- + `z` INT NOT NULL DEFAULT '0',
- + `type` INT NOT NULL DEFAULT '0',
- + `sixex` INT NOT NULL DEFAULT '0',
- + `sizey` INT NOT NULL DEFAULT '0',
- + `height` INT NOT NULL DEFAULT '0'
- +);
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment