101
paper-server/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
Normal file
101
paper-server/src/main/java/org/bukkit/craftbukkit/CraftRaid.java
Normal file
@@ -0,0 +1,101 @@
|
||||
package org.bukkit.craftbukkit;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.EntityRaider;
|
||||
import net.minecraft.server.World;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Raid;
|
||||
import org.bukkit.entity.Raider;
|
||||
|
||||
public final class CraftRaid implements Raid {
|
||||
|
||||
private final net.minecraft.server.Raid handle;
|
||||
|
||||
public CraftRaid(net.minecraft.server.Raid handle) {
|
||||
this.handle = handle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStarted() {
|
||||
return handle.j(); // PAIL rename isStarted
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getActiveTicks() {
|
||||
return handle.i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBadOmenLevel() {
|
||||
return handle.o;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBadOmenLevel(int badOmenLevel) {
|
||||
int max = handle.l(); // PAIL rename getMaxBadOmenLevel
|
||||
Preconditions.checkArgument(0 <= badOmenLevel && badOmenLevel <= max, "Bad Omen level must be between 0 and %s", max);
|
||||
handle.o = badOmenLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getLocation() {
|
||||
BlockPosition pos = handle.t(); // PAIL rename getCenterLocation
|
||||
World world = handle.i(); // PAIL rename getWorld
|
||||
return new Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaidStatus getStatus() {
|
||||
if (handle.d()) { // PAIL rename isStopped
|
||||
return RaidStatus.STOPPED;
|
||||
} else if (handle.e()) { // PAIL rename isVictory
|
||||
return RaidStatus.VICTORY;
|
||||
} else if (handle.f()) { // PAIL rename isLoss
|
||||
return RaidStatus.LOSS;
|
||||
} else {
|
||||
return RaidStatus.ONGOING;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSpawnedGroups() {
|
||||
return handle.k(); // PAIL rename countSpawnedGroups
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalGroups() {
|
||||
return handle.v + (handle.o > 1 ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTotalWaves() {
|
||||
return handle.v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getTotalHealth() {
|
||||
return handle.q(); // PAIL rename sumMobHealth
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<UUID> getHeroes() {
|
||||
return Collections.unmodifiableSet(handle.h);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Raider> getRaiders() {
|
||||
return handle.getRaiders().stream().map(new Function<EntityRaider, Raider>() {
|
||||
@Override
|
||||
public Raider apply(EntityRaider entityRaider) {
|
||||
return (Raider) entityRaider.getBukkitEntity();
|
||||
}
|
||||
}).collect(ImmutableList.toImmutableList());
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectSortedSet;
|
||||
import net.minecraft.server.AxisAlignedBB;
|
||||
@@ -77,6 +78,7 @@ import net.minecraft.server.MovingObjectPosition;
|
||||
import net.minecraft.server.PacketPlayOutCustomSoundEffect;
|
||||
import net.minecraft.server.PacketPlayOutUpdateTime;
|
||||
import net.minecraft.server.PacketPlayOutWorldEvent;
|
||||
import net.minecraft.server.PersistentRaid;
|
||||
import net.minecraft.server.PlayerChunk;
|
||||
import net.minecraft.server.ProtoChunkExtension;
|
||||
import net.minecraft.server.RayTrace;
|
||||
@@ -88,7 +90,6 @@ import net.minecraft.server.Vec3D;
|
||||
import net.minecraft.server.WorldGenFeatureEmptyConfiguration;
|
||||
import net.minecraft.server.WorldGenHugeMushroomConfiguration;
|
||||
import net.minecraft.server.WorldGenerator;
|
||||
import net.minecraft.server.WorldNBTStorage;
|
||||
import net.minecraft.server.WorldServer;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.bukkit.BlockChangeDelegate;
|
||||
@@ -104,6 +105,7 @@ import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.StructureType;
|
||||
import org.bukkit.TreeType;
|
||||
import org.bukkit.Raid;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldBorder;
|
||||
import org.bukkit.block.Biome;
|
||||
@@ -2145,4 +2147,20 @@ public class CraftWorld implements World {
|
||||
BlockPosition nearest = getHandle().getChunkProvider().getChunkGenerator().findNearestMapFeature(getHandle(), structureType.getName(), originPos, radius, findUnexplored);
|
||||
return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Raid locateNearestRaid(Location location, int radius) {
|
||||
Validate.notNull(location, "Location cannot be null");
|
||||
Validate.isTrue(radius >= 0, "Radius cannot be negative");
|
||||
|
||||
PersistentRaid persistentRaid = world.C(); // PAIL rename getPersistentRaid
|
||||
net.minecraft.server.Raid raid = persistentRaid.a(new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ()), radius * radius); // PAIL rename getNearbyRaid
|
||||
return (raid == null) ? null : new CraftRaid(raid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Raid> getRaids() {
|
||||
PersistentRaid persistentRaid = world.C(); // PAIL rename getPersistentRaid
|
||||
return persistentRaid.a.values().stream().map(CraftRaid::new).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityPotion;
|
||||
import net.minecraft.server.EntitySheep;
|
||||
import net.minecraft.server.EntitySlime;
|
||||
import net.minecraft.server.EntityRaider;
|
||||
import net.minecraft.server.EntityTypes;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.EntityWaterAnimal;
|
||||
@@ -60,6 +61,7 @@ import net.minecraft.server.MovingObjectPositionBlock;
|
||||
import net.minecraft.server.MovingObjectPositionEntity;
|
||||
import net.minecraft.server.NPC;
|
||||
import net.minecraft.server.PacketPlayInCloseWindow;
|
||||
import net.minecraft.server.Raid;
|
||||
import net.minecraft.server.Unit;
|
||||
import net.minecraft.server.World;
|
||||
import net.minecraft.server.WorldServer;
|
||||
@@ -70,6 +72,7 @@ import org.bukkit.Statistic.Type;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.craftbukkit.CraftRaid;
|
||||
import org.bukkit.craftbukkit.CraftServer;
|
||||
import org.bukkit.craftbukkit.CraftStatistic;
|
||||
import org.bukkit.craftbukkit.CraftWorld;
|
||||
@@ -78,6 +81,7 @@ import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
import org.bukkit.craftbukkit.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
|
||||
import org.bukkit.craftbukkit.entity.CraftRaider;
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryCrafting;
|
||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||
@@ -100,6 +104,7 @@ import org.bukkit.entity.Pig;
|
||||
import org.bukkit.entity.PigZombie;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.entity.Raider;
|
||||
import org.bukkit.entity.Sheep;
|
||||
import org.bukkit.entity.ThrownExpBottle;
|
||||
import org.bukkit.entity.ThrownPotion;
|
||||
@@ -188,6 +193,10 @@ import org.bukkit.event.player.PlayerStatisticIncrementEvent;
|
||||
import org.bukkit.event.player.PlayerUnleashEntityEvent;
|
||||
import org.bukkit.event.server.ServerListPingEvent;
|
||||
import org.bukkit.event.vehicle.VehicleCreateEvent;
|
||||
import org.bukkit.event.raid.RaidTriggerEvent;
|
||||
import org.bukkit.event.raid.RaidFinishEvent;
|
||||
import org.bukkit.event.raid.RaidStopEvent;
|
||||
import org.bukkit.event.raid.RaidSpawnWaveEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
@@ -1441,4 +1450,33 @@ public class CraftEventFactory {
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Raid events
|
||||
*/
|
||||
public static boolean callRaidTriggerEvent(Raid raid, EntityPlayer player) {
|
||||
RaidTriggerEvent event = new RaidTriggerEvent(new CraftRaid(raid), raid.i().getWorld(), player.getBukkitEntity());
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
return !event.isCancelled();
|
||||
}
|
||||
|
||||
public static void callRaidFinishEvent(Raid raid, List<Player> players) {
|
||||
RaidFinishEvent event = new RaidFinishEvent(new CraftRaid(raid), raid.i().getWorld(), players);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
public static void callRaidStopEvent(Raid raid, RaidStopEvent.Reason reason) {
|
||||
RaidStopEvent event = new RaidStopEvent(new CraftRaid(raid), raid.i().getWorld(), reason);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
public static void callRaidSpawnWaveEvent(Raid raid, EntityRaider leader, List<EntityRaider> raiders) {
|
||||
Raider craftLeader = (CraftRaider) leader.getBukkitEntity();
|
||||
List<Raider> craftRaiders = new ArrayList<>();
|
||||
for (EntityRaider entityRaider : raiders) {
|
||||
craftRaiders.add((Raider) entityRaider.getBukkitEntity());
|
||||
}
|
||||
RaidSpawnWaveEvent event = new RaidSpawnWaveEvent(new CraftRaid(raid), raid.i().getWorld(), craftLeader, craftRaiders);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user