本文整理汇总了Java中org.spongepowered.api.data.value.mutable.MutableBoundedValue类的典型用法代码示例。如果您正苦于以下问题:Java MutableBoundedValue类的具体用法?Java MutableBoundedValue怎么用?Java MutableBoundedValue使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MutableBoundedValue类属于org.spongepowered.api.data.value.mutable包,在下文中一共展示了MutableBoundedValue类的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: registerKeys
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public void registerKeys() {
super.registerKeys();
final ValueCollection c = getValueCollection();
c.register(Keys.MAX_AIR, 300, 0, Integer.MAX_VALUE);
c.register(Keys.REMAINING_AIR, 300, 0, Keys.MAX_AIR);
c.register(Keys.MAX_HEALTH, 20.0, 0.0, 1024.0);
c.register(Keys.HEALTH, 20.0, 0.0, Keys.MAX_HEALTH)
.addListener((oldElement, newElement) -> {
if (newElement <= 0) {
handleDeath();
}
});
//noinspection unchecked
c.register((Key<MutableBoundedValue<Double>>) (Key) Keys.ABSORPTION, 0.0, 0.0, 1024.0);
c.register(Keys.POTION_EFFECTS, new ArrayList<>());
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:18,代码来源:LanternLiving.java
示例2: nodeSize
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public MutableBoundedValue<Integer> nodeSize() {
return SpongeValueFactory.boundedBuilder(ThaumicKeys.AURA_NODE_SIZE)
.defaultValue(1)
.minimum(0)
.maximum(Integer.MAX_VALUE)
.actualValue(this.nodeSize)
.build();
}
开发者ID:gabizou,项目名称:ThaumicSponge,代码行数:10,代码来源:ThaumicAuraNodeData.java
示例3: nodeSize
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public MutableBoundedValue<Integer> nodeSize() {
return SpongeValueFactory.boundedBuilder(ThaumicKeys.AURA_NODE_SIZE)
.defaultValue(1)
.minimum(0)
.maximum(Integer.MAX_VALUE)
.actualValue(this.getNodeSize())
.build();
}
开发者ID:gabizou,项目名称:ThaumicSponge,代码行数:10,代码来源:MixinEntityAura.java
示例4: pulsePotions
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
private void pulsePotions(int deltaTicks) {
// TODO: Move potion effects to a component? + The key registration
final List<PotionEffect> potionEffects = get(Keys.POTION_EFFECTS).get();
if (!potionEffects.isEmpty()) {
final PotionEffect.Builder builder = PotionEffect.builder();
final ImmutableList.Builder<PotionEffect> newPotionEffects = ImmutableList.builder();
for (PotionEffect potionEffect : potionEffects) {
final boolean instant = potionEffect.getType().isInstant();
final int duration = instant ? 1 : potionEffect.getDuration() - deltaTicks;
if (duration > 0) {
final PotionEffect newPotionEffect = builder.from(potionEffect).duration(duration).build();
((LanternPotionEffectType) newPotionEffect.getType()).getEffectConsumer().accept(this, newPotionEffect);
if (!instant) {
newPotionEffects.add(newPotionEffect);
}
}
if (potionEffect.getType() == PotionEffectTypes.GLOWING) {
offer(Keys.GLOWING, duration > 0);
} else if (potionEffect.getType() == PotionEffectTypes.INVISIBILITY) {
offer(Keys.INVISIBLE, duration > 0);
} else if (potionEffect.getType() == PotionEffectTypes.HUNGER && supports(Keys.EXHAUSTION)) {
final MutableBoundedValue<Double> exhaustion = getValue(Keys.EXHAUSTION).get();
final double value = exhaustion.get() + (double) deltaTicks * 0.005 * (potionEffect.getAmplifier() + 1.0);
offer(Keys.EXHAUSTION, Math.min(value, exhaustion.getMaxValue()));
} else if (potionEffect.getType() == PotionEffectTypes.SATURATION && supports(FoodData.class)) {
final int amount = potionEffect.getAmplifier() + 1;
final int food = Math.min(get(Keys.FOOD_LEVEL).get() + amount, get(LanternKeys.MAX_FOOD_LEVEL).get());
offer(Keys.FOOD_LEVEL, food);
offer(Keys.SATURATION, Math.min(get(Keys.SATURATION).get() + (amount * 2), food));
}
}
offer(Keys.POTION_EFFECTS, newPotionEffects.build());
}
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:35,代码来源:LanternLiving.java
示例5: heal
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
/**
* Heals the entity for the specified amount.
*
* <p>Will not heal them if they are dead and will not set
* them above their maximum health.</p>
*
* @param amount The amount to heal for
* @param source The healing source
*/
public boolean heal(double amount, HealingSource source) {
if (isDead()) {
return false;
}
final MutableBoundedValue<Double> health = getValue(Keys.HEALTH).orElse(null);
if (health == null || health.get() >= health.getMaxValue()) {
return false;
}
final CauseStack causeStack = CauseStack.current();
try (CauseStack.Frame frame = causeStack.pushCauseFrame()) {
frame.pushCause(source);
frame.addContext(LanternEventContextKeys.HEALING_TYPE, source.getHealingType());
final HealEntityEvent event = SpongeEventFactory.createHealEntityEvent(
frame.getCurrentCause(), new ArrayList<>(), this, amount);
Sponge.getEventManager().post(event);
if (event.isCancelled()) {
return false;
}
amount = event.getFinalHealAmount();
if (amount > 0) {
offer(Keys.HEALTH, Math.min(health.get() + amount, health.getMaxValue()));
}
}
return true;
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:36,代码来源:LanternEntity.java
示例6: set
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public MutableBoundedValue<E> set(E value) {
if (this.comparator.compare(value, this.minimum) >= 0 && this.comparator.compare(value, this.maximum) <= 0) {
this.actualValue = checkNotNull(value);
}
return this;
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:8,代码来源:LanternBoundedValue.java
示例7: showReport
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public void showReport(List<Action> actions, Receiver receiver)
{
Action action = actions.get(0);
Optional<BlockSnapshot> orig = action.getCached(BLOCKS_ORIG, Recall::origSnapshot);
Optional<BlockSnapshot> repl = action.getCached(BLOCKS_REPL, Recall::replSnapshot);
Text cause = Recall.cause(action);
if (!repl.isPresent() || !orig.isPresent())
{
throw new IllegalStateException();
}
Optional<MutableBoundedValue<Integer>> growth = repl.get().getValue(Keys.GROWTH_STAGE);
if (growth.isPresent())
{
if (growth.get().get().equals(growth.get().getMaxValue()))
{
receiver.sendReport(this, actions, actions.size(),
"{txt} let {txt} grow to maturity",
"{txt} let {txt} grow to maturity x{}",
cause, name(orig.get(), receiver), actions.size());
return;
}
receiver.sendReport(this, actions, actions.size(),
"{txt} let {txt} grow",
"{txt} let {txt} grow x{}",
cause, name(orig.get(), receiver), actions.size());
return;
}
// TODO other modifyables
receiver.sendReport(this, actions, actions.size(),
"{txt} modified {txt}",
"{txt} modified {txt} x{}",
cause, name(orig.get(), receiver), actions.size());
}
开发者ID:CubeEngine,项目名称:modules-extra,代码行数:36,代码来源:ModifyBlockReport.java
示例8: setFuseTicks
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public void setFuseTicks(int fuseTicks) {
MutableBoundedValue<Integer> value = getHandle().getFuseData().getFuseDuration();
Preconditions.checkArgument(fuseTicks >= value.getMinValue() && fuseTicks <= value.getMaxValue(),
"Value for fuse duration is outside acceptable range (" + value.getMinValue() + ", "
+ value.getMaxValue() + ")");
getHandle().offer(value.set(fuseTicks));
}
开发者ID:LapisBlue,项目名称:Pore,代码行数:9,代码来源:PoreTNTPrimed.java
示例9: nodeSize
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
default MutableBoundedValue<Integer> nodeSize() {
return getValue(ThaumicKeys.AURA_NODE_SIZE).get();
}
开发者ID:gabizou,项目名称:ThaumicSpongeAPI,代码行数:4,代码来源:AuraNode.java
示例10: pulseFood
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
private void pulseFood() {
if (!supports(FoodData.class) || get(Keys.GAME_MODE).orElse(GameModes.NOT_SET).equals(GameModes.CREATIVE)) {
return;
}
final Difficulty difficulty = getWorld().getDifficulty();
MutableBoundedValue<Double> exhaustion = getValue(Keys.EXHAUSTION).get();
MutableBoundedValue<Double> saturation = getValue(Keys.SATURATION).get();
MutableBoundedValue<Integer> foodLevel = getValue(Keys.FOOD_LEVEL).get();
if (exhaustion.get() > 4.0) {
if (saturation.get() > saturation.getMinValue()) {
offer(Keys.SATURATION, Math.max(saturation.get() - 1.0, saturation.getMinValue()));
// Get the updated saturation
saturation = getValue(Keys.SATURATION).get();
} else if (!difficulty.equals(Difficulties.PEACEFUL)) {
offer(Keys.FOOD_LEVEL, Math.max(foodLevel.get() - 1, foodLevel.getMinValue()));
// Get the updated food level
foodLevel = getValue(Keys.FOOD_LEVEL).get();
}
offer(Keys.EXHAUSTION, Math.max(exhaustion.get() - 4.0, exhaustion.getMinValue()));
exhaustion = getValue(Keys.EXHAUSTION).get();
}
final boolean naturalRegeneration = getWorld().getOrCreateRule(RuleTypes.NATURAL_REGENERATION).getValue();
final long currentTickTime = LanternGame.currentTimeTicks();
if (naturalRegeneration && saturation.get() > saturation.getMinValue() && foodLevel.get() >= foodLevel.getMaxValue()) {
if ((currentTickTime - this.lastFoodTickTime) >= 10) {
final double amount = Math.min(saturation.get(), 6.0);
heal(amount / 6.0, HealingSources.FOOD);
offer(Keys.EXHAUSTION, Math.min(exhaustion.get() + amount, exhaustion.getMaxValue()));
this.lastFoodTickTime = currentTickTime;
}
} else if (naturalRegeneration && foodLevel.get() >= 18) {
if ((currentTickTime - this.lastFoodTickTime) >= 80) {
heal(1.0, HealingSources.FOOD);
offer(Keys.EXHAUSTION, Math.min(6.0 + exhaustion.get(), exhaustion.getMaxValue()));
this.lastFoodTickTime = currentTickTime;
}
} else if (foodLevel.get() <= foodLevel.getMinValue()) {
if ((currentTickTime - this.lastFoodTickTime) >= 80) {
final double health = get(Keys.HEALTH).orElse(20.0);
if ((health > 10.0 && difficulty.equals(Difficulties.EASY))
|| (health > 1.0 && difficulty.equals(Difficulties.NORMAL))
|| difficulty.equals(Difficulties.HARD)) {
damage(1.0, DamageSources.STARVATION);
}
this.lastFoodTickTime = currentTickTime;
}
} else {
this.lastFoodTickTime = currentTickTime;
}
// Peaceful restoration
if (naturalRegeneration && difficulty.equals(Difficulties.PEACEFUL)) {
if (currentTickTime - this.lastPeacefulHealthTickTime >= 20) {
heal(1.0, HealingSources.MAGIC);
this.lastPeacefulHealthTickTime = currentTickTime;
}
final int oldFoodLevel = get(Keys.FOOD_LEVEL).orElse(0);
if (currentTickTime - this.lastPeacefulFoodTickTime >= 10
&& oldFoodLevel < get(LanternKeys.MAX_FOOD_LEVEL).orElse(20)) {
offer(Keys.FOOD_LEVEL, oldFoodLevel + 1);
this.lastPeacefulFoodTickTime = currentTickTime;
}
}
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:70,代码来源:LanternLiving.java
示例11: asMutable
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public MutableBoundedValue<E> asMutable() {
return new LanternBoundedValue<>(getKey(), getDefault(), getComparator(), getMinValue(), getMaxValue(), get());
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:5,代码来源:ImmutableLanternBoundedValue.java
示例12: transform
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public MutableBoundedValue<E> transform(Function<E, E> function) {
return set(checkNotNull(checkNotNull(function).apply(get())));
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:5,代码来源:LanternBoundedValue.java
示例13: createBoundedValueBuilder
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
@Override
public <E> BoundedValueBuilder<E> createBoundedValueBuilder(Key<MutableBoundedValue<E>> key) {
return new LanternBoundedValueBuilder<>(checkNotNull(key, "key"));
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:5,代码来源:LanternValueFactory.java
示例14: makeMutableBoundedValueKey
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
public static <E> Key<MutableBoundedValue<E>> makeMutableBoundedValueKey(TypeToken<E> elementToken,
DataQuery query, String id, String name) {
final TypeToken<MutableBoundedValue<E>> valueToken = new TypeToken<MutableBoundedValue<E>>() {}
.where(new TypeParameter<E>() {}, elementToken);
return new LanternKeyBuilder<>().type(valueToken).query(query).id(id).name(name).build();
}
开发者ID:LanternPowered,项目名称:LanternServer,代码行数:7,代码来源:LanternKeyFactory.java
示例15: getTimeLeftAlive
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
/**
* Gets the time in milliseconds this summon has remaining to live in the world.
*
* @return The time left remaining in the world
*/
public MutableBoundedValue<Long> getTimeLeftAlive() {
return null;
}
开发者ID:AfterKraft,项目名称:KraftRPG-API,代码行数:9,代码来源:SummonData.java
示例16: nodeSize
import org.spongepowered.api.data.value.mutable.MutableBoundedValue; //导入依赖的package包/类
MutableBoundedValue<Integer> nodeSize();
开发者ID:gabizou,项目名称:ThaumicSpongeAPI,代码行数:2,代码来源:AuraNodeData.java
注:本文中的org.spongepowered.api.data.value.mutable.MutableBoundedValue类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论