Skip to content

Commit

Permalink
Creeper max_fuse_ticks Tag and Mech
Browse files Browse the repository at this point in the history
  • Loading branch information
Xenmai committed Feb 3, 2019
1 parent 8c5e9ed commit 8d81366
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 1 deletion.
1 change: 1 addition & 0 deletions plugin/src/main/java/net/aufdemrand/denizen/Denizen.java
Expand Up @@ -847,6 +847,7 @@ public void onEnable() {
PropertyParser.registerProperty(EntityJumpStrength.class, dEntity.class);
PropertyParser.registerProperty(EntityKnockback.class, dEntity.class);
PropertyParser.registerProperty(EntityMarker.class, dEntity.class);
PropertyParser.registerProperty(EntityMaxFuseTicks.class, dEntity.class);
PropertyParser.registerProperty(EntityPainting.class, dEntity.class);
PropertyParser.registerProperty(EntityPotion.class, dEntity.class);
PropertyParser.registerProperty(EntityPowered.class, dEntity.class);
Expand Down
Expand Up @@ -2458,7 +2458,7 @@ && getBukkitEntity() instanceof Item) {
// @returns Element(Number)
// @group properties
// @description
// Returns the number of ticks until the explosion of the entity.
// Returns the number of ticks until the explosion of the primed TNT.
// -->
if (attribute.startsWith("fuse_ticks") && getBukkitEntity() instanceof TNTPrimed) {
return new Element(((TNTPrimed) getBukkitEntity()).getFuseTicks())
Expand Down
@@ -0,0 +1,100 @@
package net.aufdemrand.denizen.objects.properties.entity;

import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizencore.objects.Element;
import net.aufdemrand.denizencore.objects.Mechanism;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.objects.properties.Property;
import net.aufdemrand.denizencore.tags.Attribute;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType;

public class EntityMaxFuseTicks implements Property {

public static boolean describes(dObject object) {
return object instanceof dEntity && ((dEntity) object).getBukkitEntityType() == EntityType.CREEPER;
}

public static EntityMaxFuseTicks getFrom(dObject object) {
if (!describes(object)) {
return null;
}
else {
return new EntityMaxFuseTicks((dEntity) object);
}
}

public static final String[] handledTags = new String[]{
"max_fuse_ticks"
};

public static final String[] handledMechs = new String[] {
"max_fuse_ticks"
};


///////////////////
// Instance Fields and Methods
/////////////

private EntityMaxFuseTicks(dEntity entity) {
this.entity = entity;
}

dEntity entity;

/////////
// Property Methods
///////

@Override
public String getPropertyString() {
return entity.getBukkitEntity() instanceof Creeper ? ((Creeper) entity.getBukkitEntity()).getMaxFuseTicks() + "" : null;
}

@Override
public String getPropertyId() {
return "max_fuse_ticks";
}

@Override
public String getAttribute(Attribute attribute) {

if (attribute == null) {
return null;
}

// <--[tag]
// @attribute <e@entity.max_fuse_ticks>
// @returns Element(Integer)
// @mechanism dEntity.max_fuse_ticks
// @group properties
// @description
// Returns the number of fuse ticks a creeper will default to when not triggered.
// -->
if (attribute.startsWith("max_fuse_ticks") && entity.getBukkitEntity() instanceof Creeper) {
return new Element(((Creeper) entity.getBukkitEntity()).getMaxFuseTicks())
.getAttribute(attribute.fulfill(1));
}

return null;
}

@Override
public void adjust(Mechanism mechanism) {

// <--[mechanism]
// @object dEntity
// @name max_fuse_ticks
// @input Element(Integer)
// @description
// Sets the number of fuse ticks a creeper will default to when not triggered
// @tags
// <e@entity.max_fuse_ticks>
// -->
if (mechanism.matches("max_fuse_ticks") && entity.getBukkitEntity() instanceof Creeper && mechanism.requireInteger()) {
((Creeper) entity.getBukkitEntity()).setMaxFuseTicks(mechanism.getValue().asInt());
}

}
}

0 comments on commit 8d81366

Please sign in to comment.