9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-31 12:56:28 +00:00

添加新的函数和条件类型

This commit is contained in:
XiaoMoMi
2025-05-21 23:41:52 +08:00
parent 7bcfbf9cfe
commit 454e778378
37 changed files with 589 additions and 35 deletions

View File

@@ -42,12 +42,12 @@ public class BukkitEntity extends AbstractEntity {
}
@Override
public float getXRot() {
public float xRot() {
return literalObject().getYaw();
}
@Override
public float getYRot() {
public float yRot() {
return literalObject().getPitch();
}

View File

@@ -98,6 +98,6 @@ public class ComponentItemWrapper implements ItemWrapper<ItemStack> {
@Override
public void count(int amount) {
this.item.setAmount(amount);
this.item.setAmount(Math.max(amount, 0));
}
}

View File

@@ -60,7 +60,7 @@ public class LegacyItemWrapper implements ItemWrapper<ItemStack> {
@Override
public ItemStack load() {
ItemStack itemStack = this.rtagItem.load();
itemStack.setAmount(this.count);
itemStack.setAmount(Math.max(this.count, 0));
return itemStack;
}

View File

@@ -105,7 +105,7 @@ public class FurnitureItemBehavior extends ItemBehavior {
finalPlacePosition = new Vec3d(xz.left(), xz.right(), clickedPosition.z());
}
} else {
furnitureYaw = placement.rotationRule().apply(180 + player.getXRot());
furnitureYaw = placement.rotationRule().apply(180 + player.xRot());
Pair<Double, Double> xz = placement.alignmentRule().apply(Pair.of(clickedPosition.x(), clickedPosition.z()));
finalPlacePosition = new Vec3d(xz.left(), clickedPosition.y(), xz.right());
}

View File

@@ -675,12 +675,12 @@ public class BukkitServerPlayer extends Player {
}
@Override
public float getYRot() {
public float yRot() {
return platformPlayer().getPitch();
}
@Override
public float getXRot() {
public float xRot() {
return platformPlayer().getYaw();
}
@@ -838,4 +838,24 @@ public class BukkitServerPlayer extends Player {
public boolean isFlying() {
return platformPlayer().isFlying();
}
@Override
public int foodLevel() {
return platformPlayer().getFoodLevel();
}
@Override
public void setFoodLevel(int foodLevel) {
this.platformPlayer().setFoodLevel(Math.min(Math.max(0, foodLevel), 20));
}
@Override
public float saturation() {
return platformPlayer().getSaturation();
}
@Override
public void setSaturation(float saturation) {
this.platformPlayer().setSaturation(saturation);
}
}

View File

@@ -1,7 +1,9 @@
package net.momirealms.craftengine.bukkit.util;
import net.momirealms.craftengine.core.block.BlockSounds;
import net.momirealms.craftengine.core.sound.SoundSource;
import net.momirealms.craftengine.core.util.Key;
import org.bukkit.SoundCategory;
public class SoundUtils {
@@ -21,4 +23,19 @@ public class SoundUtils {
public static Object getOrRegisterSoundEvent(Key key) throws ReflectiveOperationException {
return Reflections.method$SoundEvent$createVariableRangeEvent.invoke(null, KeyUtils.toResourceLocation(key));
}
public static SoundCategory toBukkit(SoundSource source) {
return switch (source) {
case BLOCK -> SoundCategory.BLOCKS;
case MUSIC -> SoundCategory.MUSIC;
case VOICE -> SoundCategory.VOICE;
case MASTER -> SoundCategory.MASTER;
case PLAYER -> SoundCategory.PLAYERS;
case RECORD -> SoundCategory.RECORDS;
case AMBIENT -> SoundCategory.AMBIENT;
case HOSTILE -> SoundCategory.HOSTILE;
case NEUTRAL -> SoundCategory.NEUTRAL;
case WEATHER -> SoundCategory.WEATHER;
};
}
}

View File

@@ -3,8 +3,10 @@ package net.momirealms.craftengine.bukkit.world;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.util.EntityUtils;
import net.momirealms.craftengine.bukkit.util.ItemUtils;
import net.momirealms.craftengine.bukkit.util.SoundUtils;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.sound.SoundSource;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.world.BlockInWorld;
@@ -87,6 +89,11 @@ public class BukkitWorld implements World {
});
}
@Override
public void playSound(Position location, Key sound, float volume, float pitch, SoundSource source) {
platformWorld().playSound(new Location(null, location.x(), location.y(), location.z()), sound.toString(), SoundUtils.toBukkit(source), volume, pitch);
}
@Override
public void playBlockSound(Position location, Key sound, float volume, float pitch) {
platformWorld().playSound(new Location(null, location.x(), location.y(), location.z()), sound.toString(), SoundCategory.BLOCKS, volume, pitch);