Skip to content

Commit

Permalink
Preliminary update to Minecraft 1.13
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Jul 19, 2018
1 parent 01a1781 commit dbc4209
Show file tree
Hide file tree
Showing 17 changed files with 150 additions and 80 deletions.
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

<groupId>net.citizensnpcs</groupId>
<artifactId>citizensapi</artifactId>
<version>2.0.22-SNAPSHOT</version>
<version>2.0.23-SNAPSHOT</version>
<name>CitizensAPI</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<bukkit.version>1.12.1-R0.1-SNAPSHOT</bukkit.version>
<bukkit.version>1.13-pre7-R0.1-SNAPSHOT</bukkit.version>
<powermock.version>1.4.12</powermock.version>
<build.number>Unknown</build.number>
</properties>
Expand Down Expand Up @@ -101,5 +101,5 @@
</configuration>
</plugin>
</plugins>
</build>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,9 @@ private void setupExecution(GoalEntry entry) {

private void trySelectGoal() {
int searchPriority = Math.max(executingPriority, 1);
if (hasPrioritisableGoal)
if (hasPrioritisableGoal) {
Collections.sort(possibleGoals);
}
for (int i = possibleGoals.size() - 1; i >= 0; --i) {
GoalEntry entry = possibleGoals.get(i);
if (searchPriority > entry.getPriority())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
import org.bukkit.util.Vector;

public abstract class BlockSource {
public abstract int getBlockTypeIdAt(int x, int y, int z);

public Material getMaterialAt(int x, int y, int z) {
return Material.getMaterial(getBlockTypeIdAt(x, y, z));
}
public abstract Material getMaterialAt(int x, int y, int z);

public Material getMaterialAt(Vector pos) {
return getMaterialAt(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.Map;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;

import com.google.common.collect.Maps;
Expand Down Expand Up @@ -36,20 +37,18 @@ protected CachingChunkBlockSource(World world, int minX, int minZ, int maxX, int
}
}

protected abstract T getChunkObject(int x, int z);

protected abstract int getLightLevel(T chunk, int x, int y, int z);

@Override
public int getBlockTypeIdAt(int x, int y, int z) {
public Material getMaterialAt(int x, int y, int z) {
T chunk = getSpecific(x, z);
if (chunk != null)
return getId(chunk, x & 15, y, z & 15);
return world.getBlockTypeIdAt(x, y, z);
return getType(chunk, x & 15, y, z & 15);
return world.getBlockAt(x, y, z).getType();
}

protected abstract T getChunkObject(int x, int z);

protected abstract int getId(T chunk, int x, int y, int z);

protected abstract int getLightLevel(T chunk, int x, int y, int z);

@SuppressWarnings("unchecked")
private T getSpecific(int x, int z) {
int xx = (x >> 4) - chunkX;
Expand All @@ -72,6 +71,8 @@ private T getSpecific(int x, int z) {
return null;
}

protected abstract Material getType(T chunk, int x, int y, int z);

@Override
public World getWorld() {
return world;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;

public class ChunkBlockSource extends CachingChunkBlockSource<Chunk> {
Expand All @@ -19,12 +20,12 @@ protected Chunk getChunkObject(int x, int z) {
}

@Override
protected int getId(Chunk chunk, int x, int y, int z) {
return chunk.getBlock(x, y, z).getTypeId();
protected int getLightLevel(Chunk chunk, int x, int y, int z) {
return chunk.getBlock(x, y, z).getLightLevel();
}

@Override
protected int getLightLevel(Chunk chunk, int x, int y, int z) {
return chunk.getBlock(x, y, z).getLightLevel();
protected Material getType(Chunk chunk, int x, int y, int z) {
return chunk.getBlock(x, y, z).getType();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.bukkit.ChunkSnapshot;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;

public class ChunkSnapshotBlockSource extends CachingChunkBlockSource<ChunkSnapshot> {
Expand All @@ -19,12 +20,12 @@ protected ChunkSnapshot getChunkObject(int x, int z) {
}

@Override
protected int getId(ChunkSnapshot chunk, int x, int y, int z) {
return chunk.getBlockTypeId(x, y, z);
protected int getLightLevel(ChunkSnapshot chunk, int x, int y, int z) {
return Math.min(15, chunk.getBlockSkyLight(x, y, z) + chunk.getBlockEmittedLight(x, y, z));
}

@Override
protected int getLightLevel(ChunkSnapshot chunk, int x, int y, int z) {
return Math.min(15, chunk.getBlockSkyLight(x, y, z) + chunk.getBlockEmittedLight(x, y, z));
protected Material getType(ChunkSnapshot chunk, int x, int y, int z) {
return chunk.getBlockType(x, y, z);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@

import com.google.common.collect.Lists;

import net.citizensnpcs.api.util.SpigotUtil;

public class FlyingBlockExaminer implements NeighbourGeneratorBlockExaminer {
@Override
public float getCost(BlockSource source, PathPoint point) {
Vector pos = point.getVector();
Material above = source.getMaterialAt(pos.clone().add(UP));
Material in = source.getMaterialAt(pos);
if (above == Material.WEB || in == Material.WEB) {
if (above == WEB || in == WEB) {
return 0.5F;
}
return 0F;
Expand Down Expand Up @@ -46,4 +48,5 @@ public PassableState isPassable(BlockSource source, PathPoint point) {
}

private static final Vector UP = new Vector(0, 1, 0);
private static Material WEB = SpigotUtil.isUsing1_13API() ? Material.COBWEB : Material.valueOf("WEB");
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
import org.bukkit.block.BlockFace;
import org.bukkit.util.Vector;

import com.google.common.collect.Lists;

import net.citizensnpcs.api.ai.event.CancelReason;
import net.citizensnpcs.api.ai.event.NavigatorCallback;
import net.citizensnpcs.api.astar.pathfinder.PathPoint.PathCallback;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.SpigotUtil;

public class MinecraftBlockExaminer implements BlockExaminer {
@Override
Expand All @@ -22,13 +25,13 @@ public float getCost(BlockSource source, PathPoint point) {
Material above = source.getMaterialAt(pos.clone().add(UP));
Material below = source.getMaterialAt(pos.clone().add(DOWN));
Material in = source.getMaterialAt(pos);
if (above == Material.WEB || in == Material.WEB)
if (above == WEB || in == WEB)
return 1F;
if (below == Material.SOUL_SAND || below == Material.ICE)
return 1F;
if (isLiquid(above, below, in))
return 0.5F;
return 0F; // TODO: add light level-specific costs
return 0F; // TODO: add light level-specific costs?
}

private boolean isClimbable(Material mat) {
Expand Down Expand Up @@ -117,16 +120,6 @@ public static boolean canStandOn(Material mat) {
return !UNWALKABLE.contains(mat) && mat.isSolid();
}

private static boolean contains(Material[] search, Material... find) {
for (Material haystack : search) {
for (Material needle : find) {
if (haystack == needle)
return true;
}
}
return false;
}

public static Location findValidLocation(Location location, int radius) {
Block base = location.getBlock();
if (canStandIn(base.getType()) && canStandOn(base.getRelative(BlockFace.DOWN)))
Expand All @@ -150,22 +143,41 @@ public static boolean isDoor(Material in) {
}

public static boolean isLiquid(Material... materials) {
return contains(materials, Material.WATER, Material.STATIONARY_WATER, Material.LAVA, Material.STATIONARY_LAVA);
for (Material mat : materials) {
if (LIQUIDS.contains(mat)) {
return true;
}
}
return false;
}

public static boolean validPosition(Block in) {
return canStandIn(in.getType()) && canStandIn(in.getRelative(BlockFace.UP).getType())
&& canStandOn(in.getRelative(BlockFace.DOWN));
}

private static final Set<Material> DOORS = EnumSet.of(Material.IRON_DOOR_BLOCK, Material.WOODEN_DOOR,
Material.SPRUCE_DOOR, Material.BIRCH_DOOR, Material.JUNGLE_DOOR, Material.ACACIA_DOOR,
Material.DARK_OAK_DOOR);
private static final Set<Material> DOORS = EnumSet.of(Material.SPRUCE_DOOR, Material.BIRCH_DOOR,
Material.JUNGLE_DOOR, Material.ACACIA_DOOR, Material.DARK_OAK_DOOR);
private static final Vector DOWN = new Vector(0, -1, 0);
private static final Set<Material> NOT_JUMPABLE = EnumSet.of(Material.FENCE, Material.IRON_FENCE,
Material.NETHER_FENCE, Material.COBBLE_WALL, Material.SPRUCE_FENCE, Material.BIRCH_FENCE,
private static final Set<Material> LIQUIDS = EnumSet.of(Material.WATER, Material.LAVA);
private static final Set<Material> NOT_JUMPABLE = EnumSet.of(Material.SPRUCE_FENCE, Material.BIRCH_FENCE,
Material.JUNGLE_FENCE, Material.ACACIA_FENCE, Material.DARK_OAK_FENCE);
private static final Set<Material> UNWALKABLE = EnumSet.of(Material.AIR, Material.LAVA, Material.STATIONARY_LAVA,
Material.CACTUS);
private static final Set<Material> UNWALKABLE = EnumSet.of(Material.AIR, Material.LAVA, Material.CACTUS);
private static final Vector UP = new Vector(0, 1, 0);
private static Material WEB = SpigotUtil.isUsing1_13API() ? Material.COBWEB : Material.valueOf("WEB");

static {
if (!SpigotUtil.isUsing1_13API()) {
LIQUIDS.add(Material.valueOf("STATIONARY_LAVA"));
LIQUIDS.add(Material.valueOf("STATIONARY_WATER"));
UNWALKABLE.add(Material.valueOf("STATIONARY_LAVA"));
NOT_JUMPABLE.addAll(Lists.newArrayList(Material.valueOf("FENCE"), Material.valueOf("IRON_FENCE"),
Material.valueOf("NETHER_FENCE"), Material.valueOf("COBBLE_WALL")));
DOORS.addAll(Lists.newArrayList(Material.valueOf("IRON_DOOR_BLOCK"), Material.valueOf("WOODEN_DOOR")));
} else {
NOT_JUMPABLE.addAll(Lists.newArrayList(Material.valueOf("OAK_FENCE"),
Material.valueOf("NETHER_BRICK_FENCE"), Material.valueOf("COBBLESTONE_WALL")));
DOORS.addAll(Lists.newArrayList(Material.valueOf("IRON_DOOR"), Material.valueOf("OAK_DOOR")));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import net.citizensnpcs.api.astar.Plan;
import net.citizensnpcs.api.astar.pathfinder.PathPoint.PathCallback;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.SpigotUtil;

public class Path implements Plan {
private List<Block> blockList;
Expand Down Expand Up @@ -53,7 +54,7 @@ private PathEntry[] cull(Iterable<VectorNode> unfiltered) {
public void debug() {
for (Player player : Bukkit.getOnlinePlayers()) {
for (PathEntry entry : path) {
player.sendBlockChange(entry.vector.toLocation(player.getWorld()), Material.YELLOW_FLOWER, (byte) 0);
player.sendBlockChange(entry.vector.toLocation(player.getWorld()), YELLOW_FLOWER, (byte) 0);
}
}
}
Expand Down Expand Up @@ -144,4 +145,7 @@ public String toString() {
return vector.toString();
}
}

private static Material YELLOW_FLOWER = SpigotUtil.isUsing1_13API() ? Material.SUNFLOWER
: Material.valueOf("YELLOW_FLOWER");
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.bukkit.util.Vector;

import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.SpigotUtil;

public class SwimmingExaminer implements BlockExaminer {
private boolean canSwimInLava;
Expand All @@ -30,7 +31,8 @@ public PassableState isPassable(BlockSource source, PathPoint point) {
}
Material above = source.getMaterialAt(point.getVector().add(new Vector(0, 1, 0)));
PassableState canSwim = isSwimmableLiquid(above) || MinecraftBlockExaminer.canStandIn(above)
? PassableState.PASSABLE : PassableState.UNPASSABLE;
? PassableState.PASSABLE
: PassableState.UNPASSABLE;
if (point.getParentPoint() == null) {
return canSwim;
}
Expand All @@ -44,9 +46,11 @@ public PassableState isPassable(BlockSource source, PathPoint point) {
}

private boolean isSwimmableLiquid(Material material) {
if (material == Material.LAVA || material == Material.STATIONARY_LAVA)
if (material == Material.LAVA
|| (!SpigotUtil.isUsing1_13API() && material == Material.valueOf("STATIONARY_LAVA")))
return canSwimInLava();
return material == Material.WATER || material == Material.STATIONARY_WATER;
return material == Material.WATER
|| (!SpigotUtil.isUsing1_13API() && material == Material.valueOf("STATIONARY_WATER"));
}

public boolean isSwimming() {
Expand Down
11 changes: 6 additions & 5 deletions src/main/java/net/citizensnpcs/api/npc/SimpleNPCDataStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ public void loadInto(NPCRegistry registry) {
}
}

@Override
public void reloadFromSource() {
root.load();
}

@Override
public void saveToDisk() {
new Thread() {
Expand Down Expand Up @@ -91,6 +96,7 @@ public static NPCDataStore create(Storage storage) {
return new SimpleNPCDataStore(storage);
}

@SuppressWarnings("deprecation")
private static EntityType matchEntityType(String toMatch) {
EntityType type;
try {
Expand Down Expand Up @@ -118,11 +124,6 @@ private static <T extends Enum<?>> T matchEnum(T[] values, String toMatch) {
return type;
}

@Override
public void reloadFromSource() {
root.load();
}

private static final String LOAD_NAME_NOT_FOUND = "citizens.notifications.npc-name-not-found";
private static final String LOAD_UNKNOWN_NPC_TYPE = "citizens.notifications.unknown-npc-type";
}
2 changes: 2 additions & 0 deletions src/main/java/net/citizensnpcs/api/trait/trait/Equipment.java
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ public Entity getHolder() {
}

@Override
@SuppressWarnings("deprecation")
public ItemStack getItemInHand() {
return player.getItemInHand();
}
Expand Down Expand Up @@ -542,6 +543,7 @@ public void setHelmetDropChance(float chance) {
}

@Override
@SuppressWarnings("deprecation")
public void setItemInHand(ItemStack stack) {
player.setItemInHand(stack);
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/net/citizensnpcs/api/trait/trait/Inventory.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ private ItemStack[] parseContents(DataKey key) throws NPCLoadException {
@Override
public void run() {
saveContents(npc.getEntity());
if (views.isEmpty())
return;
Iterator<InventoryView> itr = views.iterator();
while (itr.hasNext()) {
InventoryView iview = itr.next();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public EntityType getType() {
}

@Override
@SuppressWarnings("deprecation")
public void load(DataKey key) {
try {
type = EntityType.valueOf(key.getString(""));
Expand Down
Loading

0 comments on commit dbc4209

Please sign in to comment.