Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/main/java/org/lanternpowered/server/data/key/LanternKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,22 @@ public final class LanternKeys {
public static final Key<Value<Boolean>> DUMMY =
makeValueKey(Boolean.class, DataQuery.of("Dummy"), "dummy");

///////////////////
/// Boats ///
///////////////////

public static final Key<Value<Double>> MAX_SPEED =
makeValueKey(Double.class, DataQuery.of("MaxSpeed"), "max_speed");

public static final Key<Value<Boolean>> CAN_MOVE_ON_LAND =
makeValueKey(Boolean.class, DataQuery.of("CanMoveOnLand"), "can_move_on_land");

public static final Key<Value<Double>> OCCUPIED_DECELERATION =
makeValueKey(Double.class, DataQuery.of("OccupiedDeceleration"), "occupied_deceleration");

public static final Key<Value<Double>> UNOCCUPIED_DECELERATION =
makeValueKey(Double.class, DataQuery.of("UnoccupiedDeceleration"), "unoccupied_deceleration");

private LanternKeys() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

import org.lanternpowered.server.effect.entity.EntityEffect;
import org.lanternpowered.server.entity.LanternEntity;
import org.lanternpowered.server.entity.event.DamagedEntityEvent;
import org.lanternpowered.api.entity.event.animation.DamageEntityAnimation;

/**
* Plays a entity hurt animation. This will make a
Expand All @@ -37,6 +37,6 @@ public class DefaultLivingHurtAnimation implements EntityEffect {

@Override
public void play(LanternEntity entity) {
entity.triggerEvent(DamagedEntityEvent.of());
entity.getShardeventBus().post(DamageEntityAnimation.INSTANCE);
}
}
43 changes: 13 additions & 30 deletions src/main/java/org/lanternpowered/server/entity/LanternEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@
import org.lanternpowered.server.data.key.LanternKeys;
import org.lanternpowered.server.data.property.AbstractPropertyHolder;
import org.lanternpowered.server.effect.entity.EntityEffectCollection;
import org.lanternpowered.server.entity.event.EntityEvent;
import org.lanternpowered.server.entity.interfaces.IEntity;
import org.lanternpowered.server.entity.living.player.LanternPlayer;
import org.lanternpowered.server.event.LanternEventContextKeys;
import org.lanternpowered.server.game.LanternGame;
import org.lanternpowered.server.game.registry.type.entity.EntityTypeRegistryModule;
import org.lanternpowered.server.network.entity.EntityProtocolType;
import org.lanternpowered.server.shards.AbstractComponentHolder;
import org.lanternpowered.server.text.LanternTexts;
import org.lanternpowered.server.util.Quaternions;
import org.lanternpowered.server.world.LanternWorld;
Expand Down Expand Up @@ -108,7 +108,7 @@

import javax.annotation.Nullable;

public class LanternEntity implements Entity, IAdditionalDataHolder, AbstractPropertyHolder {
public class LanternEntity extends AbstractComponentHolder implements IEntity, IAdditionalDataHolder, AbstractPropertyHolder {

@SuppressWarnings("unused")
private static boolean bypassEntityTypeLookup;
Expand Down Expand Up @@ -143,11 +143,6 @@ public class LanternEntity implements Entity, IAdditionalDataHolder, AbstractPro
*/
private EntityEffectCollection effectCollection = EntityEffectCollection.build();

/**
* The entity protocol type of this entity.
*/
@Nullable private EntityProtocolType<?> entityProtocolType;

/**
* The state of the removal of this entity.
*/
Expand Down Expand Up @@ -257,19 +252,6 @@ public Direction getHorizontalDirection(Direction.Division division) {
return Direction.getClosest(getHorizontalDirectionVector(), division);
}

@Nullable
public EntityProtocolType<?> getEntityProtocolType() {
return this.entityProtocolType;
}

public void setEntityProtocolType(@Nullable EntityProtocolType<?> entityProtocolType) {
if (entityProtocolType != null) {
checkArgument(entityProtocolType.getEntityType().isInstance(this),
"The protocol type %s is not applicable to this entity.");
}
this.entityProtocolType = entityProtocolType;
}

/**
* Gets whether this {@link Entity} is dead, should
* only be implemented by a {@link Living}.
Expand All @@ -296,6 +278,16 @@ void postDestructEvent(DestructEntityEvent event) {
}
}

/**
* Gets whether this {@link LanternEntity} currently
* exists in a {@link LanternWorld}.
*
* @return Exists in world
*/
public boolean existsInWorld() {
return this.world != null;
}

@Override
public boolean isRemoved() {
return this.removeState != null;
Expand Down Expand Up @@ -871,15 +863,6 @@ public EntityArchetype createArchetype() {
return null;
}

/**
* Triggers the {@link EntityEvent} for this entity.
*
* @param event The event
*/
public void triggerEvent(EntityEvent event) {
getWorld().getEntityProtocolManager().triggerEvent(this, event);
}

/**
* Gets the {@link SoundCategory} of this entity.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@
package org.lanternpowered.server.entity;

import org.lanternpowered.server.data.key.LanternKeys;
import org.spongepowered.api.entity.living.Humanoid;
import org.lanternpowered.server.entity.interfaces.living.IHumanoid;

import java.util.HashSet;
import java.util.UUID;

public abstract class LanternHumanoid extends LanternLiving implements Humanoid, AbstractArmorEquipable {
public abstract class LanternHumanoid extends LanternLiving implements IHumanoid {

public LanternHumanoid(UUID uniqueId) {
super(uniqueId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
import org.lanternpowered.server.effect.entity.EntityEffectCollection;
import org.lanternpowered.server.effect.entity.EntityEffectTypes;
import org.lanternpowered.server.effect.entity.particle.item.ItemDeathParticleEffect;
import org.lanternpowered.server.entity.event.CollectEntityEvent;
import org.lanternpowered.server.entity.shard.NetworkShard;
import org.lanternpowered.api.entity.event.animation.CollectEntityAnimation;
import org.lanternpowered.server.event.LanternEventContextKeys;
import org.lanternpowered.server.inventory.IInventory;
import org.lanternpowered.server.inventory.LanternItemStack;
Expand Down Expand Up @@ -80,7 +81,7 @@ public class LanternItem extends LanternEntity implements Item {

public LanternItem(UUID uniqueId) {
super(uniqueId);
setEntityProtocolType(EntityProtocolTypes.ITEM);
addShard(NetworkShard.class).get().setEntityProtocolType(EntityProtocolTypes.ITEM);
setBoundingBoxBase(BOUNDING_BOX_BASE);
setEffectCollection(DEFAULT_EFFECT_COLLECTION.copy());
}
Expand Down Expand Up @@ -229,7 +230,7 @@ private void tryToPickupItems() {
.forEach(transaction -> transaction.getSlot().set(transaction.getFinal().createStack()));
final int added = originalStack.getQuantity() - stack.getQuantity();
if (added != 0 && entity instanceof Living) {
triggerEvent(new CollectEntityEvent((Living) entity, added));
getShardeventBus().post(new CollectEntityAnimation((Living) entity, added));
}
if (isRemoved()) {
stack.clear();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.lanternpowered.server.effect.entity.sound.DefaultLivingFallSoundEffect;
import org.lanternpowered.server.effect.entity.sound.DefaultLivingSoundEffect;
import org.lanternpowered.server.effect.potion.LanternPotionEffectType;
import org.lanternpowered.server.entity.interfaces.living.ILiving;
import org.lanternpowered.server.entity.living.player.LanternPlayer;
import org.lanternpowered.server.game.LanternGame;
import org.lanternpowered.server.util.collect.Lists2;
Expand Down Expand Up @@ -87,7 +88,7 @@
import java.util.stream.Collectors;

@SuppressWarnings("ConstantConditions")
public class LanternLiving extends LanternEntity implements Living {
public class LanternLiving extends LanternEntity implements ILiving {

public static final EntityEffectCollection DEFAULT_EFFECT_COLLECTION = EntityEffectCollection.builder()
.add(EntityEffectTypes.HURT, new DefaultLivingSoundEffect(EntityBodyPosition.HEAD, SoundTypes.ENTITY_GENERIC_HURT))
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
import org.lanternpowered.server.effect.sound.LanternSoundType;
import org.lanternpowered.server.entity.EntityBodyPosition;
import org.lanternpowered.server.entity.LanternLiving;
import org.lanternpowered.server.entity.event.SpectateEntityEvent;
import org.lanternpowered.server.entity.shard.NetworkShard;
import org.lanternpowered.server.entity.event.SpectateEntityShardevent;
import org.lanternpowered.server.entity.living.player.gamemode.LanternGameMode;
import org.lanternpowered.server.entity.living.player.tab.GlobalTabList;
import org.lanternpowered.server.entity.living.player.tab.GlobalTabListEntry;
Expand Down Expand Up @@ -297,6 +298,8 @@ public LanternPlayer(LanternGameProfile gameProfile, NetworkSession session) {
setBoundingBoxBase(BOUNDING_BOX_BASE);
// Attach this player to the proxy user and load player data
getProxyUser().setInternalUser(this);
// Set the fastest update rate
getShard(NetworkShard.class).ifPresent(networkComponent -> networkComponent.setTrackingUpdateRate(1));
}

public Set<LanternBossBar> getBossBars() {
Expand Down Expand Up @@ -1130,7 +1133,7 @@ public Optional<Entity> getSpectatorTarget() {
@Override
public void setSpectatorTarget(@Nullable Entity entity) {
this.spectatorEntity = entity;
triggerEvent(new SpectateEntityEvent(entity));
getShardeventBus().post(new SpectateEntityShardevent(entity));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.lanternpowered.server.block.behavior.types.BreakBlockBehavior;
import org.lanternpowered.server.block.behavior.types.InteractWithBlockBehavior;
import org.lanternpowered.server.data.key.LanternKeys;
import org.lanternpowered.server.entity.event.SwingHandEntityEvent;
import org.lanternpowered.api.entity.event.animation.SwingHandAnimation;
import org.lanternpowered.server.game.Lantern;
import org.lanternpowered.server.game.LanternGame;
import org.lanternpowered.server.inventory.AbstractSlot;
Expand Down Expand Up @@ -382,11 +382,16 @@ public void handleBlockPlacing(MessagePlayInPlayerBlockPlacement message) {
}
}

static class SwingHandEntityShardevents {
static final SwingHandAnimation MAIN_HAND = new SwingHandAnimation(HandTypes.MAIN_HAND);
static final SwingHandAnimation OFF_HAND = new SwingHandAnimation(HandTypes.OFF_HAND);
}

public void handleSwingArm(MessagePlayInPlayerSwingArm message) {
if (message.getHandType() == HandTypes.OFF_HAND) {
return;
}
this.player.triggerEvent(SwingHandEntityEvent.of(HandTypes.MAIN_HAND));
this.player.getShardeventBus().post(SwingHandEntityShardevents.MAIN_HAND);
}

public void handleFinishItemInteraction(MessagePlayInOutFinishUsingItem message) {
Expand Down Expand Up @@ -488,7 +493,7 @@ public void handleItemInteraction(MessagePlayInPlayerUseItem message) {
}
*/
this.player.getConnection().send(new MessagePlayOutEntityAnimation(this.player.getNetworkId(), 3));
this.player.triggerEvent(SwingHandEntityEvent.of(HandTypes.OFF_HAND));
this.player.getShardeventBus().post(SwingHandEntityShardevents.OFF_HAND);
/*
final CooldownTracker cooldownTracker = this.player.getCooldownTracker();
cooldownTracker.set(handItem.get().getType(), 15);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import org.lanternpowered.server.effect.entity.EntityEffectTypes;
import org.lanternpowered.server.effect.entity.sound.weather.LightningSoundEffect;
import org.lanternpowered.server.entity.LanternEntity;
import org.lanternpowered.server.entity.shard.NetworkShard;
import org.lanternpowered.server.game.registry.type.cause.DamageTypeRegistryModule;
import org.lanternpowered.server.entity.interfaces.weather.ILightning;
import org.lanternpowered.server.network.entity.EntityProtocolTypes;
import org.lanternpowered.server.world.LanternWorld;
import org.spongepowered.api.Sponge;
Expand All @@ -51,7 +53,7 @@
import java.util.List;
import java.util.UUID;

public class LanternLightning extends LanternEntity implements AbstractLightning {
public class LanternLightning extends LanternEntity implements ILightning {

public static final EntityEffectCollection DEFAULT_SOUND_COLLECTION = EntityEffectCollection.builder()
.add(EntityEffectTypes.LIGHTNING, new LightningSoundEffect())
Expand All @@ -70,9 +72,12 @@ public class LanternLightning extends LanternEntity implements AbstractLightning

public LanternLightning(UUID uniqueId) {
super(uniqueId);
setEntityProtocolType(EntityProtocolTypes.LIGHTNING);
setEffectCollection(DEFAULT_SOUND_COLLECTION.copy());
setSoundCategory(SoundCategories.WEATHER);

final NetworkShard networkComponent = addShard(NetworkShard.class).get();
networkComponent.setEntityProtocolType(EntityProtocolTypes.LIGHTNING);
networkComponent.setTrackingRange(512);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,5 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.lanternpowered.server.entity.event;

public interface EntityEvent {

EntityEventType type();
}
@org.spongepowered.api.util.annotation.NonnullByDefault
package org.lanternpowered.server.entity.weather;
4 changes: 4 additions & 0 deletions src/main/java/org/lanternpowered/server/game/LanternGame.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import org.lanternpowered.server.config.user.ban.BanConfig;
import org.lanternpowered.server.data.LanternDataManager;
import org.lanternpowered.server.data.property.LanternPropertyRegistry;
import org.lanternpowered.server.entity.shard.DefaultBossShard;
import org.lanternpowered.server.event.LanternEventManager;
import org.lanternpowered.server.game.version.LanternMinecraftVersion;
import org.lanternpowered.server.game.version.MinecraftVersionCache;
Expand All @@ -70,6 +71,7 @@
import org.lanternpowered.server.service.permission.LanternPermissionService;
import org.lanternpowered.server.service.sql.LanternSqlService;
import org.lanternpowered.server.service.user.LanternUserStorageService;
import org.lanternpowered.server.shards.internal.ComponentType;
import org.lanternpowered.server.world.chunk.LanternChunkTicketManager;
import org.slf4j.Logger;
import org.spongepowered.api.Game;
Expand Down Expand Up @@ -260,6 +262,8 @@ public void initialize() throws IOException {
throw new RuntimeException("An error occurred while loading the plugins.", e);
}

System.out.println("BOSS COMPONENT: " + ComponentType.get(DefaultBossShard.class));

this.gameRegistry.registerDefaults();
this.gameRegistry.earlyRegistry();

Expand Down
Loading