@Override
public void capture(IWorld capturingWorld) {
if ((capturingWorld != null) && (!this.owningWorld.isPresent() || !this.owningWorld.get().equals(capturingWorld))) {
// changed owning world
final IWVWObjectiveCaptureEvent event = WVW_MODEL_EVENTS_FACTORY.newObjectiveCapturedEvent(this, capturingWorld, this.owningWorld);
LOGGER.debug(capturingWorld + " has captured " + this + " when expected remaining buff duration was " + this.getRemainingBuffDuration(TimeUnit.SECONDS) + "s");
this.owningWorld = Optional.of(capturingWorld);
this.lastCaptureEventTimestamp = Optional.of(event.getTimestamp());
this.postedEndOfBuffEvent = false;
this.getChannel().post(event);
} else {
// no change
LOGGER.trace(this + " has already been captured by: " + capturingWorld);