Skip to content

Commit

Permalink
EntityTag.conversion_player
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Aug 8, 2022
1 parent eba6a1d commit 62a5058
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 1 deletion.
Expand Up @@ -45,6 +45,7 @@ public static void registerMainProperties() {
PropertyParser.registerProperty(EntityCharged.class, EntityTag.class);
PropertyParser.registerProperty(EntityChestCarrier.class, EntityTag.class);
PropertyParser.registerProperty(EntityColor.class, EntityTag.class);
PropertyParser.registerProperty(EntityConversionPlayer.class, EntityTag.class);
PropertyParser.registerProperty(EntityConversionTime.class, EntityTag.class);
PropertyParser.registerProperty(EntityCritical.class, EntityTag.class);
PropertyParser.registerProperty(EntityCustomName.class, EntityTag.class);
Expand Down
@@ -0,0 +1,103 @@
package com.denizenscript.denizen.objects.properties.entity;

import com.denizenscript.denizen.objects.EntityTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.properties.Property;
import com.denizenscript.denizencore.objects.properties.PropertyParser;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.ZombieVillager;

public class EntityConversionPlayer implements Property {

public static boolean describes(ObjectTag object) {
if (!(object instanceof EntityTag)) {
return false;
}
Entity entity = ((EntityTag) object).getBukkitEntity();
return entity instanceof ZombieVillager;
}

public static EntityConversionPlayer getFrom(ObjectTag entity) {
if (!describes(entity)) {
return null;
}
else {
return new EntityConversionPlayer((EntityTag) entity);
}
}

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

private EntityConversionPlayer(EntityTag ent) {
entity = ent;
}

EntityTag entity;

@Override
public String getPropertyString() {
OfflinePlayer player = getZombieVillager().getConversionPlayer();
if (player != null && player.hasPlayedBefore()) {
return new PlayerTag(player).identify();
}
return null;
}

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

public static void registerTags() {

// <--[tag]
// @attribute <EntityTag.conversion_player>
// @returns PlayerTag
// @mechanism EntityTag.conversion_player
// @group properties
// @description
// Returns the player that caused a zombie villager to start converting back to a villager, if any.
// -->
PropertyParser.<EntityConversionPlayer, PlayerTag>registerTag(PlayerTag.class, "conversion_player", (attribute, object) -> {
OfflinePlayer player = object.getZombieVillager().getConversionPlayer();
if (player != null && player.hasPlayedBefore()) {
return new PlayerTag(player);
}
return null;
});
}

public ZombieVillager getZombieVillager() {
return (ZombieVillager) entity.getBukkitEntity();
}

@Override
public void adjust(Mechanism mechanism) {

// <--[mechanism]
// @object EntityTag
// @name conversion_player
// @input PlayerTag
// @description
// Sets the player that caused a zombie villager to start converting back to a villager.
// Give no input to remove the player ID from the zombie-villager.
// @tags
// <EntityTag.conversion_player>
// -->
if (mechanism.matches("conversion_player")) {
if (mechanism.hasValue()) {
if (mechanism.requireObject(PlayerTag.class)) {
getZombieVillager().setConversionPlayer(mechanism.valueAsType(PlayerTag.class).getOfflinePlayer());
}
}
else {
getZombieVillager().setConversionPlayer(null);
}
}
}
}
Expand Up @@ -77,7 +77,7 @@ public static void registerTags() {
// @returns ElementTag(Boolean)
// @group properties
// @description
// Returns whether an entity is currently underoing a conversion process. This can be:
// Returns whether an entity is currently undergoing a conversion process. This can be:
// A zombie villager being cured,
// A zombie becoming a drowned (See also <@link tag EntityTag.in_water_duration>),
// A husk becoming a zombie, or
Expand Down

0 comments on commit 62a5058

Please sign in to comment.