diff --git a/odb/auction/placeholder.txt b/odb/auction/placeholder.txt new file mode 100644 index 00000000..e69de29b diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index c398a980..dbe46f8a 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -14,7 +14,7 @@ def run(core, actor, target, commandString): if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): target.getContainer().transferTo(actor, container, target) core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) - core.housingService.addItemToHouseItemList(target,actorContainer) + #core.housingService.addItemToHouseItemList(target,actorContainer) return elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff": actor.sendSystemMessage("You do not have permission to access that container!", 0) diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 1598b374..502ebef4 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -43,7 +43,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=5) +@Entity(version=6) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent @@ -58,7 +58,6 @@ public class BuildingObject extends TangibleObject implements IPersistent { private byte privacy=(byte)0; public static byte PRIVATE = (byte)0; public static byte PUBLIC = (byte)1; - private Vector itemsList = new Vector(); private short maximumStorageCapacity=0; private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes private Vector banList = new Vector(); @@ -150,13 +149,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { } public Vector getItemsList() { - return itemsList; + Vector items = new Vector(); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> items.add((TangibleObject) item))); + return items; } - public void setItemsList(Vector itemsList) { - this.itemsList = itemsList; - } - public short getMaximumStorageCapacity() { return maximumStorageCapacity; } @@ -238,4 +235,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { txn = env.beginTransaction(null, null); txn.setLockTimeout(500, TimeUnit.MILLISECONDS); } + + public Vector getCells() { + Vector cells = new Vector(); + this.viewChildren(this, true, false, (cell) -> cells.add((CellObject) cell)); + return cells; + } + } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index 5626ce35..b10755f2 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -125,7 +125,7 @@ public class HarvesterObject extends InstallationObject { private byte resourceUpdateCount; private Vector adminList = new Vector(); private Vector hopperList = new Vector(); - private SWGObject owner; + private long owner; private float currentHarvestedCountFloat=0.0F; private String deedTemplate; @@ -192,7 +192,7 @@ public class HarvesterObject extends InstallationObject { public void activateHarvester(CreatureObject owner){ activated = true; - this.setOwner(owner); + this.setOwner(owner.getObjectID()); owner.getClient().getSession().write(messageBuilder.buildHINO3Delta(this,(byte)1)); owner.getClient().getSession().write(messageBuilder.buildHINO7ActivateDelta2(this)); } @@ -335,12 +335,12 @@ public class HarvesterObject extends InstallationObject { } - public SWGObject getOwner() { + public long getOwner() { return owner; } - public void setOwner(SWGObject owner) { + public void setOwner(long owner) { this.owner = owner; } @@ -388,11 +388,11 @@ public class HarvesterObject extends InstallationObject { } public void deActivate(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public void placeHarvester(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public static void createAndPlaceHarvester(SWGObject object){ @@ -487,14 +487,14 @@ public class HarvesterObject extends InstallationObject { public void createNewHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); } public void continueHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, NGECore.getInstance().objectService.getObject(owner), planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); } @Override diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 5a3870e7..3392e5fd 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -21,15 +21,15 @@ ******************************************************************************/ package resources.objects.installation; +import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.Persistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; - import resources.objects.tangible.TangibleObject; -@Persistent(version=0) +@Entity(version=0) public class InstallationObject extends TangibleObject { public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index e1526ef7..5ee88004 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -544,7 +544,6 @@ public class HousingService implements INetworkDispatch { for (TangibleObject del : building.getItemsList()){ core.objectService.destroyObject(del); } - building.getItemsList().clear(); ownerC.sendSystemMessage("@player_structure:items_deleted",(byte)1); core.suiService.closeSUIWindow(owner, 0); } diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 11c17dfe..93e076c9 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -787,12 +787,12 @@ public class HarvesterService implements INetworkDispatch { public void updateHarvester(HarvesterObject harvester){ - + CreatureObject owner = (CreatureObject)core.objectService.getObject(harvester.getOwner()); + if(harvester.isActivated()) { // Check maintenance and power if (harvester.getMaintenanceAmount()<=0){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking maintenance.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -800,7 +800,6 @@ public class HarvesterService implements INetworkDispatch { } if (harvester.getPowerLevel()<=0 && !harvester.isGenerator()){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking power.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -840,7 +839,6 @@ public class HarvesterService implements INetworkDispatch { int oldStackCount = hopperContainer.getStackCount(); int newStackCount = (int) (harvester.getCurrentHarvestedCountFloat()); - CreatureObject owner = (CreatureObject)harvester.getOwner(); if (newStackCount>oldStackCount){ for (ResourceContainerObject iterContainer : outputHopperContent){ if (iterContainer.getReferenceID()==hopperContainer.getReferenceID()){ diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index b49cf67f..0e76c325 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -46,6 +46,7 @@ import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; +import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -86,8 +87,8 @@ public class SUIService implements INetworkDispatch { HarvesterObject harvester = (HarvesterObject) target; Vector admins = harvester.getAdminList(); Vector hoppers = harvester.getHopperList(); - - if (harvester.getOwner()==owner && !admins.contains(owner.getCustomName())){ + CreatureObject creature = (CreatureObject) core.objectService.getObject(harvester.getOwner()); + if (creature == owner && !admins.contains(owner.getCustomName())){ admins.add(owner.getCustomName()); }