completely server-side effects
This commit is contained in:
parent
3dede03182
commit
53d86302b6
@ -1,12 +1,14 @@
|
|||||||
package com.jenny.magic.items;
|
package com.jenny.magic.items;
|
||||||
|
|
||||||
import com.jenny.magic.config.ConfigServer;
|
import com.jenny.magic.config.ConfigServer;
|
||||||
|
import com.jenny.magic.networking.networking;
|
||||||
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
|
import com.jenny.magic.particles.effects;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
@ -45,7 +47,7 @@ public class TeleportScroll extends BaseItem {
|
|||||||
return level.dimension().location().toString();
|
return level.dimension().location().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean locationSet(@NotNull CompoundTag cTag) {
|
static protected boolean locationSet(@NotNull CompoundTag cTag) {
|
||||||
return cTag.contains("teleport_x") && cTag.contains("teleport_y") && cTag.contains("teleport_z");
|
return cTag.contains("teleport_x") && cTag.contains("teleport_y") && cTag.contains("teleport_z");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,24 +57,23 @@ public class TeleportScroll extends BaseItem {
|
|||||||
}
|
}
|
||||||
if (locationSet(itemStack.getTag()) && !player.isCrouching()) {
|
if (locationSet(itemStack.getTag()) && !player.isCrouching()) {
|
||||||
if (dimCheck(player, itemStack.getTag())) {
|
if (dimCheck(player, itemStack.getTag())) {
|
||||||
if (level.isClientSide) {
|
if (!level.isClientSide) {
|
||||||
spawnParticles(level, player.position().add(0, player.getEyeHeight(), 0), 20, 5, ParticleTypes.POOF, ParticleDirection.INWARD);
|
|
||||||
spawnParticles(level, getLocation(itemStack.getTag()).add(0, player.getEyeHeight(), 0), 20, 0.2, ParticleTypes.END_ROD, ParticleDirection.OUTWARD);
|
|
||||||
} else {
|
|
||||||
if (rangeCheck(player.position(), getLocation(itemStack.getTag()))) {
|
if (rangeCheck(player.position(), getLocation(itemStack.getTag()))) {
|
||||||
Vec3 vec = getLocation(itemStack.getTag());
|
Vec3 vec = getLocation(itemStack.getTag());
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_ORIGIN, player.position().add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_TARGET, getLocation(itemStack.getTag()).add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
player.teleportTo(vec.x, vec.y, vec.z);
|
player.teleportTo(vec.x, vec.y, vec.z);
|
||||||
} else {
|
} else {
|
||||||
MessageDist();
|
MessageDist(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
MessageWrongDim();
|
MessageWrongDim(player);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
itemStack.setTag(setLocation(level, player, pos, itemStack.getTag()));
|
itemStack.setTag(setLocation(level, player, pos, itemStack.getTag()));
|
||||||
if (level.isClientSide) {
|
if (level.isClientSide) {
|
||||||
MessageLocationSet();
|
MessageLocationSet(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,15 +118,15 @@ public class TeleportScroll extends BaseItem {
|
|||||||
return ConfigServer.C_TELEPORT_SCROLL_RANGE.get() == 0 || p1.subtract(p2).length() < ConfigServer.C_TELEPORT_SCROLL_RANGE.get();
|
return ConfigServer.C_TELEPORT_SCROLL_RANGE.get() == 0 || p1.subtract(p2).length() < ConfigServer.C_TELEPORT_SCROLL_RANGE.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void MessageLocationSet() {
|
protected void MessageLocationSet(Player player) {
|
||||||
Minecraft.getInstance().player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.set", MODID)));
|
player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.set", MODID)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void MessageWrongDim() {
|
protected void MessageWrongDim(Player player) {
|
||||||
Minecraft.getInstance().player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.dim", MODID)));
|
player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.dim", MODID)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void MessageDist() {
|
protected void MessageDist(Player player) {
|
||||||
Minecraft.getInstance().player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.dist", MODID)));
|
player.sendSystemMessage(Component.translatable(String.format("message.%s.scroll_teleport.dist", MODID)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package com.jenny.magic.items;
|
package com.jenny.magic.items;
|
||||||
|
|
||||||
|
import com.jenny.magic.networking.networking;
|
||||||
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
|
import com.jenny.magic.particles.effects;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
@ -8,6 +11,7 @@ import net.minecraft.network.chat.Component;
|
|||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
import net.minecraft.world.InteractionResultHolder;
|
||||||
@ -21,7 +25,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
import static com.jenny.magic.Magic.MODID;
|
import static com.jenny.magic.Magic.MODID;
|
||||||
|
|
||||||
@ -49,16 +52,12 @@ public class TeleportScrollBiome extends BaseItem {
|
|||||||
|
|
||||||
protected void use(@NotNull Player player, ItemStack itemStack) {
|
protected void use(@NotNull Player player, ItemStack itemStack) {
|
||||||
if (!player.level().isClientSide) {
|
if (!player.level().isClientSide) {
|
||||||
Predicate<Holder<Biome>> predicate = new Predicate<Holder<Biome>>() {
|
Pair<BlockPos, Holder<Biome>> pair = ((ServerLevel) player.level()).findClosestBiome3d(biomeHolder -> biomeHolder.is(biome), player.blockPosition(), 69000, 32, 64);
|
||||||
@Override
|
|
||||||
public boolean test(@NotNull Holder<Biome> biomeHolder) {
|
|
||||||
return biomeHolder.is(biome);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Pair<BlockPos, Holder<Biome>> pair = ((ServerLevel) player.level()).findClosestBiome3d(predicate, player.blockPosition(), 69000, 32, 64);
|
|
||||||
if (pair == null) {
|
if (pair == null) {
|
||||||
MessageBiomeNotFound(player);
|
MessageBiomeNotFound(player);
|
||||||
} else {
|
} else {
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_ORIGIN, player.position().add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_TARGET, pair.getFirst().getCenter().add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
player.teleportTo(pair.getFirst().getX(), pair.getFirst().getY(), pair.getFirst().getZ());
|
player.teleportTo(pair.getFirst().getX(), pair.getFirst().getY(), pair.getFirst().getZ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,13 @@ public class TeleportScrollConsumable extends TeleportScroll {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, Level level) {
|
protected void use(Vec3 pos, Player player, @NotNull ItemStack itemStack, Level level) {
|
||||||
|
if (itemStack.getTag() != null && locationSet(itemStack.getTag())) {
|
||||||
super.use(pos, player, itemStack, level);
|
super.use(pos, player, itemStack, level);
|
||||||
itemStack.shrink(1);
|
itemStack.shrink(1);
|
||||||
|
} else {
|
||||||
|
super.use(pos, player, itemStack, level);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
package com.jenny.magic.items;
|
package com.jenny.magic.items;
|
||||||
|
|
||||||
import com.jenny.magic.config.ConfigServer;
|
import com.jenny.magic.config.ConfigServer;
|
||||||
|
import com.jenny.magic.networking.networking;
|
||||||
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
|
import com.jenny.magic.particles.effects;
|
||||||
import net.minecraft.ChatFormatting;
|
import net.minecraft.ChatFormatting;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.chat.MutableComponent;
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.util.RandomSource;
|
import net.minecraft.util.RandomSource;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
@ -47,9 +51,9 @@ public class TeleportScrollRandom extends BaseItem {
|
|||||||
if (!player.level().isClientSide) {
|
if (!player.level().isClientSide) {
|
||||||
if (itemStack.getTag() != null && itemStack.getTag().contains("teleport_x")) {
|
if (itemStack.getTag() != null && itemStack.getTag().contains("teleport_x")) {
|
||||||
Vec3 pos = getPos(itemStack.getTag());
|
Vec3 pos = getPos(itemStack.getTag());
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_ORIGIN, player.position().add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.SCROLL_TELEPORT_TARGET, pos.add(0, player.getEyeHeight(), 0)), (ServerPlayer) player);
|
||||||
player.teleportTo(pos.x, pos.y, pos.z);
|
player.teleportTo(pos.x, pos.y, pos.z);
|
||||||
spawnParticles(player.level(), player.position().add(0, player.getEyeHeight(), 0), 20, 5, ParticleTypes.POOF, ParticleDirection.INWARD);
|
|
||||||
spawnParticles(player.level(), player.position().add(0, player.getEyeHeight(), 0), 20, 0.2, ParticleTypes.END_ROD, ParticleDirection.OUTWARD);
|
|
||||||
itemStack.shrink(1);
|
itemStack.shrink(1);
|
||||||
} else {
|
} else {
|
||||||
int maxDist = ConfigServer.C_TELEPORT_SCROLL_RANGE_RANDOM.get();
|
int maxDist = ConfigServer.C_TELEPORT_SCROLL_RANGE_RANDOM.get();
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
package com.jenny.magic.items;
|
|
||||||
|
|
||||||
import com.mojang.datafixers.util.Pair;
|
|
||||||
import net.minecraft.core.BlockPos;
|
|
||||||
import net.minecraft.core.Holder;
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.world.InteractionHand;
|
|
||||||
import net.minecraft.world.InteractionResult;
|
|
||||||
import net.minecraft.world.InteractionResultHolder;
|
|
||||||
import net.minecraft.world.entity.player.Player;
|
|
||||||
import net.minecraft.world.item.ItemStack;
|
|
||||||
import net.minecraft.world.item.context.UseOnContext;
|
|
||||||
import net.minecraft.world.level.Level;
|
|
||||||
import net.minecraft.world.level.biome.Biome;
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
public class TeleportScrollRandomBiome extends BaseItem {
|
|
||||||
public TeleportScrollRandomBiome(Properties pProperties) {
|
|
||||||
super(pProperties);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level pLevel, @NotNull Player pPlayer, @NotNull InteractionHand pUsedHand) {
|
|
||||||
use(pPlayer, pPlayer.getItemInHand(pUsedHand));
|
|
||||||
return InteractionResultHolder.success(pPlayer.getItemInHand(pUsedHand));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {
|
|
||||||
use(pContext.getPlayer(), pContext.getItemInHand());
|
|
||||||
return InteractionResult.SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void use(@NotNull Player player, ItemStack itemStack) {
|
|
||||||
if (!player.level().isClientSide && itemStack.getTag() != null && itemStack.getTag().contains("teleport_biome")) {
|
|
||||||
Biome biome = ForgeRegistries.BIOMES.getValue(ResourceLocation.parse(itemStack.getTag().getString("teleport_biome")));
|
|
||||||
Predicate<Holder<Biome>> predicate = new Predicate<Holder<Biome>>() {
|
|
||||||
@Override
|
|
||||||
public boolean test(@NotNull Holder<Biome> biomeHolder) {
|
|
||||||
return Objects.equals(biomeHolder.get().toString(), biome.toString());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Pair<BlockPos, Holder<Biome>> pair = ((ServerLevel) player.level()).findClosestBiome3d(predicate, player.blockPosition(), 69000, 32, 64);
|
|
||||||
if (pair == null) {
|
|
||||||
System.out.println("error: biome not found");
|
|
||||||
} else {
|
|
||||||
player.teleportTo(pair.getFirst().getX(), pair.getFirst().getY(), pair.getFirst().getZ());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setBiome(player.level(), itemStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setBiome(Level level, ItemStack itemStack) {
|
|
||||||
//ForgeRegistries.BIOMES.getEntries().stream().toList().get().;
|
|
||||||
Collection<Biome> list = ForgeRegistries.BIOMES.getValues();
|
|
||||||
//String biomeStr = list.get(level.getRandom().nextInt(list.size())).toString();
|
|
||||||
|
|
||||||
CompoundTag compoundTag = itemStack.getTag();
|
|
||||||
compoundTag = compoundTag != null ? compoundTag : new CompoundTag();
|
|
||||||
//compoundTag.putString("teleport_biome", biomeStr);
|
|
||||||
itemStack.setTag(compoundTag);
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,6 +2,7 @@ package com.jenny.magic.items;
|
|||||||
|
|
||||||
import com.jenny.magic.networking.networking;
|
import com.jenny.magic.networking.networking;
|
||||||
import com.jenny.magic.networking.packets.EffectS2C;
|
import com.jenny.magic.networking.packets.EffectS2C;
|
||||||
|
import com.jenny.magic.particles.effects;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.InteractionResult;
|
import net.minecraft.world.InteractionResult;
|
||||||
@ -38,7 +39,7 @@ public class WandVacuum extends BaseItem {
|
|||||||
for (ItemEntity e : level.getEntitiesOfClass(ItemEntity.class, aabb)) {
|
for (ItemEntity e : level.getEntitiesOfClass(ItemEntity.class, aabb)) {
|
||||||
e.playerTouch(player);
|
e.playerTouch(player);
|
||||||
}
|
}
|
||||||
networking.sendToPlayer(new EffectS2C(EffectS2C.Effect.WAND_VACUUM, player.position(), player.position()), (ServerPlayer) player);
|
networking.sendToPlayer(new EffectS2C(effects.EFFECT.WAND_VACUUM, player.position()), (ServerPlayer) player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package com.jenny.magic.mana;
|
|
||||||
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.event.server.ServerLifecycleEvent;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import static com.jenny.magic.Magic.MODID;
|
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.DEDICATED_SERVER)
|
|
||||||
public class ManaServer {
|
|
||||||
public static HashMap<String, Integer> mana = new HashMap<>();
|
|
||||||
|
|
||||||
public static void serverLoad(ServerLifecycleEvent event) {
|
|
||||||
if event.
|
|
||||||
}
|
|
||||||
|
|
||||||
public st
|
|
||||||
}
|
|
@ -5,23 +5,20 @@ import net.minecraft.network.FriendlyByteBuf;
|
|||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class EffectS2C {
|
public class EffectS2C {
|
||||||
private final Effect effectID;
|
private final effects.EFFECT effectID;
|
||||||
private final Vec3 vector1, vector2;
|
private final Vec3 vector1;
|
||||||
|
|
||||||
public EffectS2C(Effect effectID, @Nullable Vec3 origin, @Nullable Vec3 target) {
|
public EffectS2C(effects.EFFECT effectID, Vec3 origin) {
|
||||||
this.effectID = effectID;
|
this.effectID = effectID;
|
||||||
this.vector1 = origin;
|
this.vector1 = origin;
|
||||||
this.vector2 = target;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EffectS2C(FriendlyByteBuf buf) {
|
public EffectS2C(FriendlyByteBuf buf) {
|
||||||
this.effectID = Effect.values()[buf.getByte(2)];
|
this.effectID = effects.EFFECT.values()[buf.getByte(2)];
|
||||||
this.vector1 = new Vec3(buf.getFloat(3), buf.getFloat(7), buf.getFloat(11));
|
this.vector1 = new Vec3(buf.getFloat(3), buf.getFloat(7), buf.getFloat(11));
|
||||||
this.vector2 = new Vec3(buf.getFloat(15), buf.getFloat(19), buf.getFloat(23));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void toBytes(FriendlyByteBuf buf) {
|
public void toBytes(FriendlyByteBuf buf) {
|
||||||
@ -30,22 +27,13 @@ public class EffectS2C {
|
|||||||
buf.writeFloat((float) vector1.x);
|
buf.writeFloat((float) vector1.x);
|
||||||
buf.writeFloat((float) vector1.y);
|
buf.writeFloat((float) vector1.y);
|
||||||
buf.writeFloat((float) vector1.z);
|
buf.writeFloat((float) vector1.z);
|
||||||
buf.writeFloat((float) vector2.x);
|
|
||||||
buf.writeFloat((float) vector2.y);
|
|
||||||
buf.writeFloat((float) vector2.z);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean handle(Supplier<NetworkEvent.Context> supplier) {
|
public boolean handle(Supplier<NetworkEvent.Context> supplier) {
|
||||||
NetworkEvent.Context context = supplier.get();
|
NetworkEvent.Context context = supplier.get();
|
||||||
context.enqueueWork(() -> {
|
context.enqueueWork(() -> {
|
||||||
System.out.println("test069 " + this.effectID + " " + this.vector1 + " " + this.vector2);
|
effects.executeEffect(this.effectID, this.vector1);
|
||||||
effects.executeEffect(this.effectID, this.vector1, this.vector2);
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Effect {
|
|
||||||
SCROLL_HEALTH,
|
|
||||||
WAND_VACUUM
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.jenny.magic.particles;
|
package com.jenny.magic.particles;
|
||||||
|
|
||||||
import com.jenny.magic.networking.packets.EffectS2C;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.core.particles.ParticleTypes;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.util.RandomSource;
|
import net.minecraft.util.RandomSource;
|
||||||
@ -10,19 +9,34 @@ import net.minecraft.world.phys.Vec3;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class effects {
|
public class effects {
|
||||||
public static void executeEffect(EffectS2C.Effect effect, @Nullable Vec3 origin, @Nullable Vec3 destination) {
|
public static void executeEffect(EFFECT effect, @Nullable Vec3 origin) {
|
||||||
if (effect == EffectS2C.Effect.WAND_VACUUM) {
|
switch (effect) {
|
||||||
wandVacuum(origin, destination);
|
case WAND_VACUUM -> wandVacuum(origin);
|
||||||
|
case SCROLL_TELEPORT_ORIGIN -> teleportOrigin(origin);
|
||||||
|
case SCROLL_TELEPORT_TARGET -> teleportTarget(origin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void scrollTeleport(Vec3 origin, Vec3 destination) {
|
private static void teleportOrigin(Vec3 v) {
|
||||||
|
for (int i = 0; i < 20; i++) {
|
||||||
|
Vec3 randPos = randPos(1);
|
||||||
|
Vec3 pos = v.add(randPos);
|
||||||
|
Vec3 delta = randPos.scale(-0.1);
|
||||||
|
level().addParticle(ParticleTypes.GLOW_SQUID_INK, pos.x, pos.y, pos.z, delta.x, delta.y, delta.z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void wandVacuum(Vec3 origin, Vec3 destination) {
|
private static void teleportTarget(Vec3 v) {
|
||||||
|
for (int i = 0; i < 20; i++) {
|
||||||
|
Vec3 randPos = randPosRandDist(0.2f);
|
||||||
|
level().addParticle(ParticleTypes.GLOW_SQUID_INK, v.x, v.y, v.z, randPos.x, randPos.y, randPos.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void wandVacuum(Vec3 v) {
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
Vec3 randPos = randPos2D(5);
|
Vec3 randPos = randPos2D(5);
|
||||||
Vec3 pos = origin.add(randPos);
|
Vec3 pos = v.add(randPos);
|
||||||
Vec3 delta = randPos.scale(-0.1).add(0, 0.2, 0);
|
Vec3 delta = randPos.scale(-0.1).add(0, 0.2, 0);
|
||||||
level().addParticle(ParticleTypes.GLOW_SQUID_INK, pos.x, pos.y, pos.z, delta.x, delta.y, delta.z);
|
level().addParticle(ParticleTypes.GLOW_SQUID_INK, pos.x, pos.y, pos.z, delta.x, delta.y, delta.z);
|
||||||
}
|
}
|
||||||
@ -56,4 +70,11 @@ public class effects {
|
|||||||
private static RandomSource rng() {
|
private static RandomSource rng() {
|
||||||
return level().getRandom();
|
return level().getRandom();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum EFFECT {
|
||||||
|
SCROLL_TELEPORT_ORIGIN,
|
||||||
|
SCROLL_TELEPORT_TARGET,
|
||||||
|
SCROLL_HEALTH,
|
||||||
|
WAND_VACUUM
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user