vfo/src/main/java/engineering/wolfgirl/vfo/VFO.java
2019-11-25 13:39:27 -08:00

64 lines
2.0 KiB
Java

package engineering.wolfgirl.vfo;
import com.flowpowered.math.vector.Vector3d;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.event.action.SleepingEvent;
import org.spongepowered.api.event.block.ChangeBlockEvent;
import org.spongepowered.api.event.entity.living.humanoid.player.RespawnPlayerEvent;
import org.spongepowered.api.event.filter.cause.First;
import org.spongepowered.api.event.item.inventory.DropItemEvent;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;
import org.spongepowered.api.world.Location;
import org.spongepowered.api.world.World;
import com.google.inject.Inject;
import org.slf4j.Logger;
import java.util.Optional;
import java.util.concurrent.ThreadLocalRandom;
@Plugin(id = "vfo", name = "VFO", version = "1.0", description = "wolfgirl engineering urbex tweaks")
public class VFO {
@Inject
private Logger logger;
@Listener
public void onServerStart(GameStartedServerEvent event) {
logger.info("VFO enabled");
}
@Listener
public void onRespawn(RespawnPlayerEvent event) {
Optional<Location<World>> new_location;
while (true) {
Vector3d new_spawn_offset = new Vector3d(
ThreadLocalRandom.current().nextInt(-256, 256 + 1),
0,
ThreadLocalRandom.current().nextInt(-256, 256 + 1));
Vector3d new_spawn = event.getToTransform().getExtent().getSpawnLocation().getPosition().add(new_spawn_offset);
new_location = Sponge.getTeleportHelper().getSafeLocation(
new Location<World>(event.getToTransform().getExtent(), new_spawn), 25, 3);
if (new_location.isPresent()) {
break;
}
}
event.setToTransform(event.getToTransform().setLocation(new_location.get()));
}
@Listener
public void onSleep(SleepingEvent event, @First Player player) {
player.offer(Keys.HEALTH, player.get(Keys.MAX_HEALTH).orElse(20.0));
}
}