Skip to content

Commit

Permalink
tradetag villager_xp and price_multiplier
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jun 17, 2021
1 parent 5ab2395 commit 02b4c7f
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 2 deletions.
Expand Up @@ -200,7 +200,9 @@ public static void registerMainProperties() {
PropertyParser.registerProperty(TradeHasXp.class, TradeTag.class);
PropertyParser.registerProperty(TradeInputs.class, TradeTag.class);
PropertyParser.registerProperty(TradeMaxUses.class, TradeTag.class);
PropertyParser.registerProperty(TradePriceMultiplier.class, TradeTag.class);
PropertyParser.registerProperty(TradeResult.class, TradeTag.class);
PropertyParser.registerProperty(TradeUses.class, TradeTag.class);
PropertyParser.registerProperty(TradeVillagerXP.class, TradeTag.class);
}
}
Expand Up @@ -243,7 +243,7 @@ public ObjectTag getObjectAttribute(Attribute attribute) {

// <--[tag]
// @attribute <EntityTag.allowed_colors>
// @returns ElementTag
// @returns ListTag
// @mechanism EntityTag.color
// @group properties
// @description
Expand Down
Expand Up @@ -44,7 +44,7 @@ public String getPropertyString() {

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

@Override
Expand Down
@@ -0,0 +1,73 @@
package com.denizenscript.denizen.objects.properties.trade;

import com.denizenscript.denizen.objects.TradeTag;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.properties.Property;
import com.denizenscript.denizencore.objects.properties.PropertyParser;

public class TradePriceMultiplier implements Property {

public static boolean describes(ObjectTag recipe) {
return recipe instanceof TradeTag;
}

public static TradePriceMultiplier getFrom(ObjectTag recipe) {
if (!describes(recipe)) {
return null;
}
return new TradePriceMultiplier((TradeTag) recipe);
}

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

private TradeTag recipe;

public TradePriceMultiplier(TradeTag recipe) {
this.recipe = recipe;
}

public String getPropertyString() {
if (recipe.getRecipe() == null) {
return null;
}
return String.valueOf(recipe.getRecipe().getPriceMultiplier());
}

public String getPropertyId() {
return "price_multiplier";
}

public static void registerTags() {

// <--[tag]
// @attribute <TradeTag.price_multiplier>
// @returns ElementTag(Decimal)
// @mechanism TradeTag.price_multiplier
// @description
// Returns the price multiplier for this trade.
// -->
PropertyParser.<TradePriceMultiplier>registerTag("price_multiplier", (attribute, recipe) -> {
return new ElementTag(recipe.recipe.getRecipe().getPriceMultiplier());
});
}

public void adjust(Mechanism mechanism) {

// <--[mechanism]
// @object TradeTag
// @name price_multiplier
// @input ElementTag(Decimal)
// @description
// Sets the price multiplier for this trade.
// @tags
// <TradeTag.price_multiplier>
// -->
if (mechanism.matches("price_multiplier") && mechanism.requireFloat()) {
recipe.getRecipe().setPriceMultiplier(mechanism.getValue().asFloat());
}
}
}
@@ -0,0 +1,73 @@
package com.denizenscript.denizen.objects.properties.trade;

import com.denizenscript.denizen.objects.TradeTag;
import com.denizenscript.denizencore.objects.Mechanism;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.properties.Property;
import com.denizenscript.denizencore.objects.properties.PropertyParser;

public class TradeVillagerXP implements Property {

public static boolean describes(ObjectTag recipe) {
return recipe instanceof TradeTag;
}

public static TradeVillagerXP getFrom(ObjectTag recipe) {
if (!describes(recipe)) {
return null;
}
return new TradeVillagerXP((TradeTag) recipe);
}

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

private TradeTag recipe;

public TradeVillagerXP(TradeTag recipe) {
this.recipe = recipe;
}

public String getPropertyString() {
if (recipe.getRecipe() == null) {
return null;
}
return String.valueOf(recipe.getRecipe().getVillagerExperience());
}

public String getPropertyId() {
return "villager_xp";
}

public static void registerTags() {

// <--[tag]
// @attribute <TradeTag.villager_xp>
// @returns ElementTag(Number)
// @mechanism TradeTag.villager_xp
// @description
// Returns the amount of experience a villager gains from this trade.
// -->
PropertyParser.<TradeVillagerXP>registerTag("villager_xp", (attribute, recipe) -> {
return new ElementTag(recipe.recipe.getRecipe().getVillagerExperience());
});
}

public void adjust(Mechanism mechanism) {

// <--[mechanism]
// @object TradeTag
// @name villager_xp
// @input ElementTag(Number)
// @description
// Sets the amount of experience a villager gains from this trade.
// @tags
// <TradeTag.villager_xp>
// -->
if (mechanism.matches("villager_xp") && mechanism.requireInteger()) {
recipe.getRecipe().setVillagerExperience(mechanism.getValue().asInt());
}
}
}

0 comments on commit 02b4c7f

Please sign in to comment.