66 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.entity.player;
 | |
| 
 | |
| import com.mojang.serialization.Codec;
 | |
| import com.mojang.serialization.codecs.RecordCodecBuilder;
 | |
| 
 | |
| public class Abilities {
 | |
| 	private static final boolean DEFAULT_INVULNERABLE = false;
 | |
| 	private static final boolean DEFAULY_FLYING = false;
 | |
| 	private static final boolean DEFAULT_MAY_FLY = false;
 | |
| 	private static final boolean DEFAULT_INSTABUILD = false;
 | |
| 	private static final boolean DEFAULT_MAY_BUILD = true;
 | |
| 	private static final float DEFAULT_FLYING_SPEED = 0.05F;
 | |
| 	private static final float DEFAULT_WALKING_SPEED = 0.1F;
 | |
| 	public boolean invulnerable;
 | |
| 	public boolean flying;
 | |
| 	public boolean mayfly;
 | |
| 	public boolean instabuild;
 | |
| 	public boolean mayBuild = true;
 | |
| 	private float flyingSpeed = 0.05F;
 | |
| 	private float walkingSpeed = 0.1F;
 | |
| 
 | |
| 	public float getFlyingSpeed() {
 | |
| 		return this.flyingSpeed;
 | |
| 	}
 | |
| 
 | |
| 	public void setFlyingSpeed(float flyingSpeed) {
 | |
| 		this.flyingSpeed = flyingSpeed;
 | |
| 	}
 | |
| 
 | |
| 	public float getWalkingSpeed() {
 | |
| 		return this.walkingSpeed;
 | |
| 	}
 | |
| 
 | |
| 	public void setWalkingSpeed(float walkingSpeed) {
 | |
| 		this.walkingSpeed = walkingSpeed;
 | |
| 	}
 | |
| 
 | |
| 	public Abilities.Packed pack() {
 | |
| 		return new Abilities.Packed(this.invulnerable, this.flying, this.mayfly, this.instabuild, this.mayBuild, this.flyingSpeed, this.walkingSpeed);
 | |
| 	}
 | |
| 
 | |
| 	public void apply(Abilities.Packed abilities) {
 | |
| 		this.invulnerable = abilities.invulnerable;
 | |
| 		this.flying = abilities.flying;
 | |
| 		this.mayfly = abilities.mayFly;
 | |
| 		this.instabuild = abilities.instabuild;
 | |
| 		this.mayBuild = abilities.mayBuild;
 | |
| 		this.flyingSpeed = abilities.flyingSpeed;
 | |
| 		this.walkingSpeed = abilities.walkingSpeed;
 | |
| 	}
 | |
| 
 | |
| 	public record Packed(boolean invulnerable, boolean flying, boolean mayFly, boolean instabuild, boolean mayBuild, float flyingSpeed, float walkingSpeed) {
 | |
| 		public static final Codec<Abilities.Packed> CODEC = RecordCodecBuilder.create(
 | |
| 			instance -> instance.group(
 | |
| 					Codec.BOOL.fieldOf("invulnerable").orElse(false).forGetter(Abilities.Packed::invulnerable),
 | |
| 					Codec.BOOL.fieldOf("flying").orElse(false).forGetter(Abilities.Packed::flying),
 | |
| 					Codec.BOOL.fieldOf("mayfly").orElse(false).forGetter(Abilities.Packed::mayFly),
 | |
| 					Codec.BOOL.fieldOf("instabuild").orElse(false).forGetter(Abilities.Packed::instabuild),
 | |
| 					Codec.BOOL.fieldOf("mayBuild").orElse(true).forGetter(Abilities.Packed::mayBuild),
 | |
| 					Codec.FLOAT.fieldOf("flySpeed").orElse(0.05F).forGetter(Abilities.Packed::flyingSpeed),
 | |
| 					Codec.FLOAT.fieldOf("walkSpeed").orElse(0.1F).forGetter(Abilities.Packed::walkingSpeed)
 | |
| 				)
 | |
| 				.apply(instance, Abilities.Packed::new)
 | |
| 		);
 | |
| 	}
 | |
| }
 |