Skip to content

Commit

Permalink
[EXPERIMENTAL] Experimental update
Browse files Browse the repository at this point in the history
"It compiles!"...
  • Loading branch information
Morphan1 committed Jul 17, 2018
1 parent 35ff018 commit c5d9cf1
Show file tree
Hide file tree
Showing 25 changed files with 701 additions and 445 deletions.
@@ -1,6 +1,8 @@
package net.aufdemrand.denizen.events.block;

import net.aufdemrand.denizen.events.BukkitScriptEvent;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.objects.dLocation;
import net.aufdemrand.denizen.objects.dMaterial;
import net.aufdemrand.denizen.utilities.DenizenAPI;
Expand Down Expand Up @@ -99,11 +101,15 @@ else if (name.equals("new_material")) {
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent event) {
Material changedType = event.getChangedType();
// TODO: 1.13 - better method?
if (changedType == Material.REDSTONE_WIRE
|| changedType == Material.DIODE_BLOCK_OFF
|| changedType == Material.DIODE_BLOCK_ON
|| changedType == Material.REDSTONE_COMPARATOR_OFF
|| changedType == Material.REDSTONE_COMPARATOR_ON) {
|| NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R1)
? (changedType == Material.REPEATER
|| changedType == Material.COMPARATOR)
: (changedType == Material.valueOf("DIODE_BLOCK_OFF")
|| changedType == Material.valueOf("DIODE_BLOCK_ON")
|| changedType == Material.valueOf("REDSTONE_COMPARATOR_OFF")
|| changedType == Material.valueOf("REDSTONE_COMPARATOR_ON"))) {
return;
}
location = new dLocation(event.getBlock().getLocation());
Expand Down
@@ -1,6 +1,8 @@
package net.aufdemrand.denizen.events.entity;

import net.aufdemrand.denizen.events.BukkitScriptEvent;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dLocation;
Expand Down Expand Up @@ -86,7 +88,9 @@ else if (name.equals("location")) {
return location;
}
else if (name.equals("item")) {
ItemStack itemStack = new ItemStack(Material.FIREWORK);
// TODO: 1.13 - better method?
Material firework = NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R1) ? Material.FIREWORK_ROCKET : Material.valueOf("FIREWORK");
ItemStack itemStack = new ItemStack(firework);
itemStack.setItemMeta(event.getEntity().getFireworkMeta());
return new dItem(itemStack);
}
Expand Down
Expand Up @@ -160,7 +160,8 @@ public void onProjectileHits(ProjectileHitEvent event) {
projectile.getLocation().toVector(), projectile.getLocation().getDirection().normalize(), 0, 4);
while (bi.hasNext()) {
block = bi.next();
if (block.getTypeId() != 0) {
// TODO: 1.13 - ???
if (block.getType().getId() != 0) {
break;
}
}
Expand Down
Expand Up @@ -2,6 +2,8 @@

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.events.BukkitScriptEvent;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.scripts.containers.core.BookScriptContainer;
Expand Down Expand Up @@ -95,7 +97,9 @@ else if (dScript.matches(determination)) {
if (script.getContainer() instanceof BookScriptContainer) {
dItem dBook = ((BookScriptContainer) script.getContainer()).getBookFrom(player, null);
bookMeta = (BookMeta) dBook.getItemStack().getItemMeta();
if (dBook.getMaterial().getMaterial() == Material.BOOK_AND_QUILL) {
// TODO: 1.13 - better method?
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R1) ? dBook.getMaterial().getMaterial() == Material.WRITABLE_BOOK
: dBook.getMaterial().getMaterial() == Material.valueOf("BOOK_AND_QUILL")) {
signing = Element.FALSE;
}
}
Expand Down
Expand Up @@ -103,8 +103,9 @@ public void listenItem(InventoryClickEvent event) {
final ItemStack item = new ItemStack(event.getCurrentItem());

//if item isn't a required item, then return
// TODO: 1.13 - better method?
if (!items.contains(CoreUtilities.toLowerCase(item.getType().name()))
&& !items.contains(String.valueOf(item.getTypeId())) && !items.contains("*")) {
&& !items.contains(String.valueOf(item.getType().getId())) && !items.contains("*")) {
return;
}

Expand Down
@@ -1,5 +1,7 @@
package net.aufdemrand.denizen.npc.examiners;

import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.objects.dMaterial;
import net.aufdemrand.denizen.objects.dNPC;
import net.citizensnpcs.api.astar.pathfinder.BlockExaminer;
Expand Down Expand Up @@ -52,7 +54,7 @@ public float getCost(BlockSource source, PathPoint point) {
// Encourage materials that are not in the filter
for (dMaterial mat : pathing_materials) {
// Discourage walking through web
if (above == Material.WEB || in == Material.WEB) {
if (above == COBWEB || in == COBWEB) {
return 1F;
}

Expand Down Expand Up @@ -111,21 +113,88 @@ private static boolean contains(Material[] search, Material... find) {
}

public static boolean isLiquid(Material... materials) {
return contains(materials, Material.WATER, Material.STATIONARY_WATER, Material.LAVA, Material.STATIONARY_LAVA);
return contains(materials, combine(WATER, LAVA));
}

// TODO: 1.13 - ...everything below.
private static final Material COBWEB;
private static final Material[] WATER;
private static final Material[] LAVA;
private static final Material[] REPEATER;
private static final Material[] FENCE_GATE;
private static final Material TALL_GRASS;
private static final Material[] REDSTONE_TORCH;
private static final Material[] CARPET;
private static final Material ROSE_RED;
private static final Material RAIL;
private static final Material[] WOOD_BUTTON;
private static final Material[] WOODEN_DOOR;
private static final Material SUGAR_CANE;
private static final Material[] SIGN;

private static Material[] combine(Material[] first, Material... second) {
int firstLen = first.length;
int secondLen = second.length;
Material[] ret = new Material[firstLen + secondLen];
System.arraycopy(first, 0, ret, 0, firstLen);
System.arraycopy(second, 0, ret, firstLen, secondLen);
return ret;
}

static {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R1)) {
COBWEB = Material.COBWEB;
WATER = new Material[] { Material.WATER };
LAVA = new Material[] { Material.LAVA };
REPEATER = new Material[] { Material.REPEATER };
FENCE_GATE = new Material[] { Material.ACACIA_FENCE_GATE, Material.BIRCH_FENCE_GATE,
Material.DARK_OAK_FENCE_GATE, Material.JUNGLE_FENCE_GATE,
Material.OAK_FENCE_GATE, Material.SPRUCE_FENCE_GATE };
TALL_GRASS = Material.TALL_GRASS;
REDSTONE_TORCH = new Material[] { Material.REDSTONE_TORCH };
CARPET = new Material[] { Material.BLACK_CARPET, Material.BLUE_CARPET, Material.BROWN_CARPET,
Material.CYAN_CARPET, Material.GRAY_CARPET, Material.GREEN_CARPET, Material.LIME_CARPET,
Material.LIGHT_BLUE_CARPET, Material.LIGHT_GRAY_CARPET, Material.MAGENTA_CARPET,
Material.ORANGE_CARPET, Material.PINK_CARPET, Material.PURPLE_CARPET, Material.RED_CARPET,
Material.WHITE_CARPET, Material.YELLOW_CARPET };
ROSE_RED = Material.ROSE_RED;
RAIL = Material.RAIL;
WOOD_BUTTON = new Material[] { Material.ACACIA_BUTTON, Material.BIRCH_BUTTON,
Material.DARK_OAK_BUTTON, Material.JUNGLE_BUTTON,
Material.OAK_BUTTON, Material.SPRUCE_BUTTON };
WOODEN_DOOR = new Material[] { Material.ACACIA_DOOR, Material.BIRCH_DOOR,
Material.DARK_OAK_DOOR, Material.JUNGLE_DOOR,
Material.OAK_DOOR, Material.SPRUCE_DOOR };
SUGAR_CANE = Material.SUGAR_CANE;
SIGN = new Material[] { Material.SIGN, Material.WALL_SIGN };
}
else {
COBWEB = Material.valueOf("WEB");
WATER = new Material[] { Material.valueOf("WATER"), Material.valueOf("STATIONARY_WATER") };
LAVA = new Material[] { Material.valueOf("LAVA"), Material.valueOf("STATIONARY_LAVA") };
REPEATER = new Material[] { Material.valueOf("DIODE"), Material.valueOf("DIODE_BLOCK_OFF"), Material.valueOf("DIODE_BLOCK_ON") };
FENCE_GATE = new Material[] { Material.valueOf("FENCE_GATE") };
TALL_GRASS = Material.valueOf("LONG_GRASS");
REDSTONE_TORCH = new Material[] { Material.valueOf("REDSTONE_TORCH_ON"), Material.valueOf("REDSTONE_TORCH_OFF") };
CARPET = new Material[] { Material.valueOf("CARPET") };
ROSE_RED = Material.valueOf("RED_ROSE");
RAIL = Material.valueOf("RAILS");
WOOD_BUTTON = new Material[] { Material.valueOf("WOOD_BUTTON") };
WOODEN_DOOR = new Material[] { Material.valueOf("WOODEN_DOOR") };
SUGAR_CANE = Material.valueOf("SUGAR_CANE_BLOCK");
SIGN = new Material[] { Material.valueOf("SIGN_POST"), Material.valueOf("WALL_SIGN") };
}
}

private static final Vector DOWN = new Vector(0, -1, 0);
private static final Set<Material> PASSABLE = EnumSet.of(Material.AIR, Material.DEAD_BUSH, Material.DETECTOR_RAIL,
Material.DIODE, Material.DIODE_BLOCK_OFF, Material.DIODE_BLOCK_ON, Material.FENCE_GATE,
Material.ITEM_FRAME, Material.LADDER, Material.LEVER, Material.LONG_GRASS, Material.CARPET,
Material.MELON_STEM, Material.NETHER_FENCE, Material.PUMPKIN_STEM, Material.POWERED_RAIL, Material.RAILS,
Material.RED_ROSE, Material.RED_MUSHROOM, Material.REDSTONE, Material.REDSTONE_TORCH_OFF,
Material.REDSTONE_TORCH_OFF, Material.REDSTONE_WIRE, Material.SIGN, Material.SIGN_POST, Material.SNOW,
Material.STRING, Material.STONE_BUTTON, Material.SUGAR_CANE_BLOCK, Material.TRIPWIRE, Material.VINE,
Material.WALL_SIGN, Material.WHEAT, Material.WATER, Material.WEB, Material.WOOD_BUTTON,
Material.WOODEN_DOOR, Material.STATIONARY_WATER);
private static final Set<Material> UNWALKABLE = EnumSet.of(Material.AIR, Material.LAVA, Material.STATIONARY_LAVA,
Material.CACTUS);
private static final Set<Material> PASSABLE = EnumSet.of(Material.AIR, combine(REPEATER, combine(FENCE_GATE,
combine(WATER, combine(CARPET, combine(WOOD_BUTTON, combine(REDSTONE_TORCH, combine(WOODEN_DOOR, combine(SIGN,
COBWEB, TALL_GRASS, ROSE_RED, RAIL, SUGAR_CANE, Material.DEAD_BUSH, Material.DETECTOR_RAIL,
Material.ITEM_FRAME, Material.LADDER, Material.LEVER, Material.MELON_STEM,
Material.PUMPKIN_STEM, Material.POWERED_RAIL, Material.RED_MUSHROOM, Material.REDSTONE,
Material.REDSTONE_WIRE, Material.SNOW, Material.STRING, Material.STONE_BUTTON,
Material.TRIPWIRE, Material.VINE, Material.WHEAT)))))))));
private static final Set<Material> UNWALKABLE = EnumSet.of(Material.AIR, combine(LAVA, Material.CACTUS));
private static final Vector UP = new Vector(0, 1, 0);
}

Expand Down
16 changes: 14 additions & 2 deletions plugin/src/main/java/net/aufdemrand/denizen/objects/dEntity.java
Expand Up @@ -898,13 +898,25 @@ else if (entity_type.getName().equals("FALLING_BLOCK")) {

material = dMaterial.valueOf(data1).getMaterial();

// TODO: 1.13
Material netherPortal;
Material endPortal;
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R1)) {
netherPortal = Material.NETHER_PORTAL;
endPortal = Material.END_PORTAL;
}
else {
netherPortal = Material.valueOf("PORTAL");
endPortal = Material.valueOf("ENDER_PORTAL");
}

// If we did not get a block with "RANDOM", or we got
// air or portals, keep trying
while (data1.equalsIgnoreCase("RANDOM") &&
((!material.isBlock()) ||
material == Material.AIR ||
material == Material.PORTAL ||
material == Material.ENDER_PORTAL)) {
material == netherPortal ||
material == endPortal)) {

material = dMaterial.valueOf(data1).getMaterial();
}
Expand Down
40 changes: 23 additions & 17 deletions plugin/src/main/java/net/aufdemrand/denizen/objects/dItem.java
Expand Up @@ -141,16 +141,17 @@ else if (ScriptRegistry.containsScript(m.group(1), BookScriptContainer.class)) {
try {
String material = m.group(1).toUpperCase();

if (aH.matchesInteger(material)) {
stack = new dItem(Integer.valueOf(material));
}
else {
// TODO: 1.13 - should we rework this?
// if (aH.matchesInteger(material)) {
// stack = new dItem(Integer.valueOf(material));
// }
// else {
dMaterial mat = dMaterial.valueOf(material);
stack = new dItem(mat.getMaterial());
if (mat.hasData()) {
stack.setDurability(mat.getData());
}
}
// }

if (m.group(2) != null) {
stack.setDurability(Short.valueOf(m.group(2)));
Expand Down Expand Up @@ -220,9 +221,14 @@ public dItem(Material material) {
this(new ItemStack(material));
}

public dItem(int itemId) {
this(new ItemStack(itemId));
}
// TODO: 1.13 - should we rework these?
// public dItem(int itemId) {
// this(new ItemStack(itemId));
// }

// public dItem(int type, int qty) {
// this(new ItemStack(type, qty));
// }

public dItem(Material material, int qty) {
this(new ItemStack(material, qty));
Expand All @@ -232,10 +238,6 @@ public dItem(dMaterial material, int qty) {
this(new ItemStack(material.getMaterial(), qty, (short) 0, material.getData()));
}

public dItem(int type, int qty) {
this(new ItemStack(type, qty));
}

public dItem(ItemStack item) {
if (item == null || item.getType() == Material.AIR) {
this.item = new ItemStack(Material.AIR, 0);
Expand Down Expand Up @@ -287,7 +289,7 @@ public int comparesTo(ItemStack item) {

// Will return -1 if these are not the same
// Material IDs
if (compared.getTypeId() != compared_to.getTypeId()) {
if (compared.getType().getId() != compared_to.getType().getId()) {
return -1;
}

Expand Down Expand Up @@ -538,7 +540,8 @@ public String identifySimple() {
return "null";
}

if (item.getTypeId() != 0) {
// TODO: 1.13 - what is this check???
if (item.getType().getId() != 0) {

// If saved item, return that
if (isUnique()) {
Expand Down Expand Up @@ -573,7 +576,8 @@ public String identifyNoIdentifier() {
return "null";
}

if (item.getTypeId() != 0) {
// TODO: 1.13 - what is this check???
if (item.getType().getId() != 0) {

// If saved item, return that
if (isUnique()) {
Expand All @@ -598,7 +602,8 @@ public String identifySimpleNoIdentifier() {
return "null";
}

if (item.getTypeId() != 0) {
// TODO: 1.13 - what is this check???
if (item.getType().getId() != 0) {

// If saved item, return that
if (isUnique()) {
Expand Down Expand Up @@ -664,7 +669,8 @@ public static void registerTags() {
registerTag("id", new TagRunnable() {
@Override
public String run(Attribute attribute, dObject object) {
return new Element(((dItem) object).getItemStack().getTypeId())
// TODO: 1.13 - should we keep this
return new Element(((dItem) object).getItemStack().getType().getId())
.getAttribute(attribute.fulfill(1));
}
});
Expand Down

0 comments on commit c5d9cf1

Please sign in to comment.