minecraft-src/net/minecraft/world/entity/animal/ShoulderRidingEntity.java
2025-09-18 12:27:44 +00:00

44 lines
1.4 KiB
Java

package net.minecraft.world.entity.animal;
import com.mojang.logging.LogUtils;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.ProblemReporter;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.TamableAnimal;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.storage.TagValueOutput;
import org.slf4j.Logger;
public abstract class ShoulderRidingEntity extends TamableAnimal {
private static final Logger LOGGER = LogUtils.getLogger();
private static final int RIDE_COOLDOWN = 100;
private int rideCooldownCounter;
protected ShoulderRidingEntity(EntityType<? extends ShoulderRidingEntity> entityType, Level level) {
super(entityType, level);
}
public boolean setEntityOnShoulder(ServerPlayer player) {
try (ProblemReporter.ScopedCollector scopedCollector = new ProblemReporter.ScopedCollector(this.problemPath(), LOGGER)) {
TagValueOutput tagValueOutput = TagValueOutput.createWithContext(scopedCollector, this.registryAccess());
this.saveWithoutId(tagValueOutput);
tagValueOutput.putString("id", this.getEncodeId());
if (player.setEntityOnShoulder(tagValueOutput.buildResult())) {
this.discard();
return true;
}
}
return false;
}
@Override
public void tick() {
this.rideCooldownCounter++;
super.tick();
}
public boolean canSitOnShoulder() {
return this.rideCooldownCounter > 100;
}
}