hytale-server/com/hypixel/hytale/builtin/adventure/objectives/config/triggercondition/HourRangeTriggerCondition.java

49 lines
2.2 KiB
Java

package com.hypixel.hytale.builtin.adventure.objectives.config.triggercondition;
import com.hypixel.hytale.builtin.adventure.objectives.markers.objectivelocation.ObjectiveLocationMarker;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.ResourceType;
import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
public class HourRangeTriggerCondition extends ObjectiveLocationTriggerCondition {
public static final BuilderCodec<HourRangeTriggerCondition> CODEC = BuilderCodec.builder(HourRangeTriggerCondition.class, HourRangeTriggerCondition::new)
.append(
new KeyedCodec<>("MinHour", Codec.INTEGER),
(hourRangeTriggerCondition, integer) -> hourRangeTriggerCondition.minHour = integer,
hourRangeTriggerCondition -> hourRangeTriggerCondition.minHour
)
.add()
.append(
new KeyedCodec<>("MaxHour", Codec.INTEGER),
(hourRangeTriggerCondition, integer) -> hourRangeTriggerCondition.maxHour = integer,
hourRangeTriggerCondition -> hourRangeTriggerCondition.maxHour
)
.add()
.build();
protected static final ResourceType<EntityStore, WorldTimeResource> WORLD_TIME_RESOURCE_RESOURCE_TYPE = WorldTimeResource.getResourceType();
protected int minHour;
protected int maxHour;
@Override
public boolean isConditionMet(
@Nonnull ComponentAccessor<EntityStore> componentAccessor, Ref<EntityStore> ref, ObjectiveLocationMarker objectiveLocationMarker
) {
int currentHour = componentAccessor.getResource(WORLD_TIME_RESOURCE_RESOURCE_TYPE).getCurrentHour();
return this.minHour > this.maxHour
? currentHour >= this.minHour || currentHour < this.maxHour
: currentHour >= this.minHour && currentHour < this.maxHour;
}
@Nonnull
@Override
public String toString() {
return "HourRangeTriggerCondition{minHour=" + this.minHour + ", maxHour=" + this.maxHour + "} " + super.toString();
}
}