added hunger, saturation, and exhaustion entity API calls.
This commit is contained in:
1 parent
d9ed35676f
commit
73cb9d6968
4 files changed
+33
-11
No files matched your search
@@ -314,6 +314,13 @@ query(p,'effect','resistance') => null
|
|||||||
|
|
||||||
Number indicating remaining entity health, or `null` if not applicable.
|
Number indicating remaining entity health, or `null` if not applicable.
|
||||||
|
|
||||||
|
### `query(e, 'hunger')`
|
||||||
|
### `query(e, 'saturation')`
|
||||||
|
### `query(e, 'exhaustion')`
|
||||||
|
|
||||||
|
Retrieves player hunger related information. For non-players, returns `null`.
|
||||||
|
|
||||||
|
|
||||||
### `query(e, 'holds', slot?)`
|
### `query(e, 'holds', slot?)`
|
||||||
|
|
||||||
Returns triple of short name, stack count, and NBT of item held in `slot`, or `null` if nothing or not applicable. Available options for `slot` are:
|
Returns triple of short name, stack count, and NBT of item held in `slot`, or `null` if nothing or not applicable. Available options for `slot` are:
|
||||||
@@ -513,6 +520,17 @@ Toggles gravity for the entity.
|
|||||||
|
|
||||||
Will set entity on fire for `ticks` ticks. Set to 0 to extinguish.
|
Will set entity on fire for `ticks` ticks. Set to 0 to extinguish.
|
||||||
|
|
||||||
|
### `modify(e, 'hunger', value)`
|
||||||
|
### `modify(e, 'saturation', value)`
|
||||||
|
### `modify(e, 'exhaustion', value)`
|
||||||
|
|
||||||
|
Modifies directly player raw hunger components. Has no effect on non-players
|
||||||
|
|
||||||
|
### `modify(e, 'add_exhaustion', value)`
|
||||||
|
|
||||||
|
adds exhaustion value to the current player exhaustion level - that's the method you probably want to use
|
||||||
|
to manipulate how much 'food' some action cost.
|
||||||
|
|
||||||
## Entity Events
|
## Entity Events
|
||||||
|
|
||||||
There is a number of events that happen to entities that you can attach your own code to in the form of event handlers.
|
There is a number of events that happen to entities that you can attach your own code to in the form of event handlers.
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package carpet.fakes;
|
package carpet.fakes;
|
||||||
|
|
||||||
public interface HungerManagerInterface {
|
public interface HungerManagerInterface {
|
||||||
float getExhaustion();
|
float getExhaustionCM();
|
||||||
|
void setExhaustionCM(float exhaust);
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
import carpet.fakes.EntityInterface;
|
|
||||||
import carpet.fakes.HungerManagerInterface;
|
import carpet.fakes.HungerManagerInterface;
|
||||||
import carpet.script.EntityEventsGroup;
|
|
||||||
import net.minecraft.entity.damage.DamageSource;
|
|
||||||
import net.minecraft.entity.player.HungerManager;
|
import net.minecraft.entity.player.HungerManager;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(HungerManager.class)
|
@Mixin(HungerManager.class)
|
||||||
public class HungerManagerMixin_scarpetEventsMixin implements HungerManagerInterface {
|
public class HungerManagerMixin_scarpetEventsMixin implements HungerManagerInterface {
|
||||||
@Shadow private float exhaustion;
|
@Shadow private float exhaustion;
|
||||||
public float getExhaustion(){
|
public float getExhaustionCM(){
|
||||||
return exhaustion;
|
return exhaustion;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
public void setExhaustionCM(float exhaust)
|
||||||
|
{
|
||||||
|
exhaustion = exhaust;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -299,8 +299,7 @@ public class EntityValue extends Value
|
|||||||
});
|
});
|
||||||
|
|
||||||
put("exhaustion",(e, a)->{
|
put("exhaustion",(e, a)->{
|
||||||
if(e instanceof PlayerEntity)
|
if(e instanceof PlayerEntity) return new NumericValue(((HungerManagerInterface)((PlayerEntity) e).getHungerManager()).getExhaustionCM());
|
||||||
return new NumericValue(((HungerManagerInterface)((PlayerEntity) e).getHungerManager()).getExhaustion());
|
|
||||||
return Value.NULL;
|
return Value.NULL;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -966,6 +965,10 @@ public class EntityValue extends Value
|
|||||||
});
|
});
|
||||||
|
|
||||||
put("exhaustion", (e, v)-> {
|
put("exhaustion", (e, v)-> {
|
||||||
|
if(e instanceof PlayerEntity) ((HungerManagerInterface) ((PlayerEntity) e).getHungerManager()).setExhaustionCM(NumericValue.asNumber(v).getFloat());
|
||||||
|
});
|
||||||
|
|
||||||
|
put("add_exhaustion", (e, v)-> {
|
||||||
if(e instanceof PlayerEntity) ((PlayerEntity) e).getHungerManager().addExhaustion((int) NumericValue.asNumber(v).getLong());
|
if(e instanceof PlayerEntity) ((PlayerEntity) e).getHungerManager().addExhaustion((int) NumericValue.asNumber(v).getLong());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user