mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-01 19:46:42 +01:00
Merge branch '1.20.1' into 1.20.2
This commit is contained in:
commit
829a57d00d
9 changed files with 68 additions and 33 deletions
|
@ -9,6 +9,7 @@ import com.minelittlepony.unicopia.ability.magic.Caster;
|
|||
import com.minelittlepony.unicopia.ability.magic.spell.effect.*;
|
||||
import com.minelittlepony.unicopia.entity.damage.UDamageTypes;
|
||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||
import com.minelittlepony.unicopia.item.FriendshipBraceletItem;
|
||||
import com.minelittlepony.unicopia.particle.OrientedBillboardParticleEffect;
|
||||
import com.minelittlepony.unicopia.particle.ParticleSpawner;
|
||||
import com.minelittlepony.unicopia.particle.TargetBoundParticleEffect;
|
||||
|
@ -59,7 +60,9 @@ public class RainboomAbilitySpell extends AbstractSpell {
|
|||
}
|
||||
}
|
||||
|
||||
source.findAllEntitiesInRange(RADIUS).forEach(e -> {
|
||||
source.findAllEntitiesInRange(RADIUS)
|
||||
.filter(e -> !FriendshipBraceletItem.isComrade(source, e))
|
||||
.forEach(e -> {
|
||||
e.damage(source.damageOf(UDamageTypes.RAINBOOM, source), 6);
|
||||
});
|
||||
EFFECT_RANGE.translate(source.getOrigin()).getBlockPositions().forEach(pos -> {
|
||||
|
|
|
@ -39,7 +39,8 @@ public class FriendshipBraceletItem extends WearableItem implements DyeableItem,
|
|||
public TypedActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
|
||||
if (!isSigned(stack) && (EquinePredicates.PLAYER_UNICORN.test(player) || AmuletSelectors.PEARL_NECKLACE.test(player))) {
|
||||
if (!isSigned(stack) && (EquinePredicates.PLAYER_UNICORN.test(player) || EquinePredicates.PLAYER_PEGASUS.test(player)
|
||||
|| AmuletSelectors.PEARL_NECKLACE.test(player))) {
|
||||
player.setCurrentHand(hand);
|
||||
|
||||
ItemStack result = stack.copy();
|
||||
|
|
|
@ -36,7 +36,7 @@ public record FollowingParticleEffect (
|
|||
this(type,
|
||||
new WeakTarget(buf),
|
||||
buf.readFloat(),
|
||||
buf.readOptional(b -> ParticleFactoryHelper.readEffect(b))
|
||||
ParticleFactoryHelper.OPTIONAL_PARTICLE_EFFECT_CODEC.read(buf)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -61,11 +61,7 @@ public record FollowingParticleEffect (
|
|||
public void write(PacketByteBuf buf) {
|
||||
target.write(buf);
|
||||
buf.writeFloat(followSpeed);
|
||||
buf.writeOptional(childEffect(), (b, child) -> {
|
||||
b.writeBoolean(true);
|
||||
b.writeInt(Registries.PARTICLE_TYPE.getRawId(child.getType()));
|
||||
child.write(buf);
|
||||
});
|
||||
ParticleFactoryHelper.OPTIONAL_PARTICLE_EFFECT_CODEC.write(buf, childEffect());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -32,7 +32,7 @@ public record LightningBoltParticleEffect (
|
|||
}
|
||||
|
||||
protected LightningBoltParticleEffect(ParticleType<LightningBoltParticleEffect> particleType, PacketByteBuf buf) {
|
||||
this(buf.readBoolean(), buf.readInt(), buf.readInt(), buf.readFloat(), buf.readOptional(ParticleFactoryHelper::readVector));
|
||||
this(buf.readBoolean(), buf.readInt(), buf.readInt(), buf.readFloat(), ParticleFactoryHelper.OPTIONAL_VECTOR_CODEC.read(buf));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -46,7 +46,7 @@ public record LightningBoltParticleEffect (
|
|||
buffer.writeInt(changeFrequency);
|
||||
buffer.writeInt(maxBranches);
|
||||
buffer.writeFloat(maxDeviation);
|
||||
buffer.writeOptional(pathEndPoint, ParticleFactoryHelper::writeVector);
|
||||
ParticleFactoryHelper.OPTIONAL_VECTOR_CODEC.write(buffer, pathEndPoint);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.minelittlepony.unicopia.particle;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import com.minelittlepony.unicopia.util.serialization.PacketCodec;
|
||||
import com.mojang.brigadier.StringReader;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
|
||||
|
@ -12,33 +14,38 @@ import net.minecraft.registry.Registries;
|
|||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
public interface ParticleFactoryHelper {
|
||||
@SuppressWarnings("deprecation")
|
||||
PacketCodec<ParticleEffect> PARTICLE_EFFECT_CODEC = new PacketCodec<>(
|
||||
buf -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
ParticleType<ParticleEffect> type = (ParticleType<ParticleEffect>)Registries.PARTICLE_TYPE.get(buf.readInt());
|
||||
return type.getParametersFactory().read(type, buf);
|
||||
},
|
||||
(buf, effect) -> {
|
||||
buf.writeInt(Registries.PARTICLE_TYPE.getRawId(effect.getType()));
|
||||
effect.write(buf);
|
||||
}
|
||||
);
|
||||
PacketCodec<Optional<ParticleEffect>> OPTIONAL_PARTICLE_EFFECT_CODEC = PARTICLE_EFFECT_CODEC.asOptional();
|
||||
PacketCodec<Vec3d> VECTOR_CODEC = new PacketCodec<>(
|
||||
buf -> new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble()),
|
||||
(buf, vector) -> {
|
||||
buf.writeDouble(vector.x);
|
||||
buf.writeDouble(vector.y);
|
||||
buf.writeDouble(vector.z);
|
||||
}
|
||||
);
|
||||
PacketCodec<Optional<Vec3d>> OPTIONAL_VECTOR_CODEC = VECTOR_CODEC.asOptional();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static <T extends ParticleEffect> T read(StringReader reader) throws CommandSyntaxException {
|
||||
return (T)ParticleEffectArgumentType.readParameters(reader, Registries.PARTICLE_TYPE.getReadOnlyWrapper());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
static <T extends ParticleEffect> ParticleEffect readEffect(PacketByteBuf buf) {
|
||||
@SuppressWarnings("unchecked")
|
||||
ParticleType<T> type = (ParticleType<T>)Registries.PARTICLE_TYPE.get(buf.readInt());
|
||||
return type.getParametersFactory().read(type, buf);
|
||||
}
|
||||
|
||||
static Vec3d readVector(StringReader reader) throws CommandSyntaxException {
|
||||
return new Vec3d(readDouble(reader), readDouble(reader), readDouble(reader));
|
||||
}
|
||||
|
||||
static Vec3d readVector(PacketByteBuf buffer) {
|
||||
return new Vec3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble());
|
||||
}
|
||||
|
||||
static void writeVector(PacketByteBuf buffer, Vec3d vector) {
|
||||
buffer.writeDouble(vector.x);
|
||||
buffer.writeDouble(vector.y);
|
||||
buffer.writeDouble(vector.z);
|
||||
}
|
||||
|
||||
static boolean readBoolean(StringReader reader) throws CommandSyntaxException {
|
||||
reader.expect(' ');
|
||||
return reader.readBoolean();
|
||||
|
|
|
@ -32,7 +32,7 @@ public record SphereParticleEffect (
|
|||
}
|
||||
|
||||
protected SphereParticleEffect(ParticleType<? extends SphereParticleEffect> type, PacketByteBuf buf) {
|
||||
this(type, buf.readVector3f(), buf.readFloat(), buf.readFloat(), ParticleFactoryHelper.readVector(buf));
|
||||
this(type, buf.readVector3f(), buf.readFloat(), buf.readFloat(), ParticleFactoryHelper.VECTOR_CODEC.read(buf));
|
||||
}
|
||||
|
||||
public SphereParticleEffect(ParticleType<? extends SphereParticleEffect> type, int tint, float alpha, float rad) {
|
||||
|
@ -61,7 +61,7 @@ public record SphereParticleEffect (
|
|||
buf.writeVector3f(color);
|
||||
buf.writeFloat(alpha);
|
||||
buf.writeFloat(radius);
|
||||
ParticleFactoryHelper.writeVector(buf, offset);
|
||||
ParticleFactoryHelper.VECTOR_CODEC.write(buf, offset);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -20,7 +20,7 @@ public class WeakTarget {
|
|||
}
|
||||
|
||||
public WeakTarget(PacketByteBuf buf) {
|
||||
fixedPosition = ParticleFactoryHelper.readVector(buf);
|
||||
fixedPosition = ParticleFactoryHelper.VECTOR_CODEC.read(buf);
|
||||
targetId = buf.readInt();
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class WeakTarget {
|
|||
}
|
||||
|
||||
public void write(PacketByteBuf buf) {
|
||||
ParticleFactoryHelper.writeVector(buf, fixedPosition);
|
||||
ParticleFactoryHelper.VECTOR_CODEC.write(buf, fixedPosition);
|
||||
buf.writeInt(targetId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package com.minelittlepony.unicopia.util.serialization;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import net.minecraft.network.PacketByteBuf;
|
||||
|
||||
public record PacketCodec<T>(PacketByteBuf.PacketReader<T> reader, PacketByteBuf.PacketWriter<T> writer) {
|
||||
|
||||
public T read(PacketByteBuf buf) {
|
||||
return reader().apply(buf);
|
||||
}
|
||||
|
||||
public void write(PacketByteBuf buf, T value) {
|
||||
writer().accept(buf, value);
|
||||
}
|
||||
|
||||
public PacketCodec<Optional<T>> asOptional() {
|
||||
return new PacketCodec<>(buf -> buf.readOptional(reader), (buf, v) -> buf.writeOptional(v, writer));
|
||||
}
|
||||
}
|
|
@ -228,6 +228,7 @@
|
|||
"block.unicopia.spectral_fire": "Спектральный огонь",
|
||||
"block.unicopia.bananas": "Бананы",
|
||||
"block.unicopia.zapling": "Саженец зап-яблони",
|
||||
"block.unicopia.potted_zapling": "Саженец зап-яблони в горшке",
|
||||
"block.unicopia.zap_log": "Бревно зап-яблони",
|
||||
"block.unicopia.zap_wood": "Зап-яблоня",
|
||||
"block.unicopia.stripped_zap_log": "Бревно обтёсанной зап-яблони",
|
||||
|
@ -251,6 +252,7 @@
|
|||
"block.unicopia.zap_apple": "Зап-яблоня",
|
||||
"block.unicopia.zap_bulb": "Недозрелая зап-яблоня",
|
||||
"block.unicopia.palm_sapling": "Саженец пальмы",
|
||||
"block.unicopia.potted_palm_sapling": "Саженец пальмы в горшке",
|
||||
"block.unicopia.palm_log": "Пальмовое бревно",
|
||||
"block.unicopia.palm_wood": "Пальма",
|
||||
"block.unicopia.palm_planks": "Пальмовые доски",
|
||||
|
@ -273,11 +275,13 @@
|
|||
"block.unicopia.gold_root": "Золотой корень",
|
||||
"block.unicopia.golden_oak_sprout": "Росток золотого дуба",
|
||||
"block.unicopia.golden_oak_sapling": "Саженец золотого дуба",
|
||||
"block.unicopia.potted_golden_oak_sapling": "Саженец золотого дуба в горшке",
|
||||
"block.unicopia.golden_oak_leaves": "Листья золотого дуба",
|
||||
"block.unicopia.golden_oak_log": "Бревно золотого дуба",
|
||||
"block.unicopia.mango": "Манго",
|
||||
"block.unicopia.mango_leaves": "Листья мангового дерева",
|
||||
"block.unicopia.mango_sapling": "Саженец мангового дерева",
|
||||
"block.unicopia.potted_mango_sapling": "Саженец манго в горшке",
|
||||
"block.unicopia.pineapple": "Ананас",
|
||||
|
||||
"block.unicopia.clam_shell": "Раковина моллюска",
|
||||
|
@ -286,12 +290,15 @@
|
|||
|
||||
"block.unicopia.green_apple_leaves": "Листья яблони Гренни Смит",
|
||||
"block.unicopia.green_apple_sapling": "Саженец яблони Гренни Смит",
|
||||
"block.unicopia.potted_green_apple_sapling": "Саженец яблони Гренни Смит в горшке",
|
||||
"block.unicopia.green_apple_sprout": "Росток яблони Гренни Смит",
|
||||
"block.unicopia.sweet_apple_leaves": "Листья яблони Яблочной Аллеи",
|
||||
"block.unicopia.sweet_apple_sapling": "Саженец яблони Яблочной Аллеи",
|
||||
"block.unicopia.potted_sweet_apple_sapling": "Саженец яблони Яблочной Аллеи в горшке",
|
||||
"block.unicopia.sweet_apple_sprout": "Росток яблони Яблочной Аллеи",
|
||||
"block.unicopia.sour_apple_leaves": "Листья кислой яблони",
|
||||
"block.unicopia.sour_apple_sapling": "Саженец кислой яблони",
|
||||
"block.unicopia.potted_sour_apple_sapling": "Саженец кислой яблони в горшке",
|
||||
"block.unicopia.sour_apple_sprout": "Росток кислой яблони",
|
||||
|
||||
"block.unicopia.surface_chitin": "Поверхностный хитин",
|
||||
|
@ -594,7 +601,7 @@
|
|||
"unicopia.diet.not_edible": "Предмет не съедобен",
|
||||
"unicopia.diet.base_multiplier": "Базовый множитель: %s%%",
|
||||
"unicopia.diet.hunger.detailed": "Голода восстановлено: %s из %s (%s%%)",
|
||||
"unicopia.diet.saturation.detailed": "Насыщения получено: %s (%s%%)",
|
||||
"unicopia.diet.saturation.detailed": "Насыщения получено: %s из %s (%s%%)",
|
||||
"unicopia.diet.hunger": "Коэффициент голода: %s%%",
|
||||
"unicopia.diet.saturation": "Коэффициент насыщения: %s%%",
|
||||
|
||||
|
@ -617,6 +624,7 @@
|
|||
"tag.unicopia.food_types.desserts": "Десерты",
|
||||
"tag.unicopia.food_types.fruits_and_vegetables": "Фрукты и овощи",
|
||||
"tag.unicopia.food_types.drinks": "Напитки",
|
||||
"tag.minecraft.leaves": "Листья",
|
||||
|
||||
"tag.unicopia.food_types.forage_edible_filling": "Крупная растительная масса",
|
||||
"tag.unicopia.food_types.forage_edible": "Растительная масса",
|
||||
|
@ -1608,7 +1616,7 @@
|
|||
"advancements.unicopia.juice.description": "Наконец-то нашлось применение всем этим яблокам",
|
||||
"advancements.unicopia.toast.title": "Он хрустящий и вкусный!",
|
||||
"advancements.unicopia.toast.description": "Сделать тостового компаньона",
|
||||
"advancements.unicopia.burn_toast.title": "Тости НЕЕЕЕЕЕЕТ!",
|
||||
"advancements.unicopia.burn_toast.title": "ТОСТИ НЕЕЕЕЕЕЕТ!",
|
||||
"advancements.unicopia.burn_toast.description": "Поджарь Тости",
|
||||
"advancements.unicopia.lucky.title": "Как на ТВ",
|
||||
"advancements.unicopia.lucky.description": "Сделать несколько счастливых подков из картофеля фри",
|
||||
|
|
Loading…
Reference in a new issue