- 215
- 3
Сделал систему пакетов, по тутору от WildHeart(вот).
Тупо копи-паст.
Только подправил в файле "LocationDoublePacket"
Строку
На вот это
Далее чтоб не придумывать свое и побыстрей попробовать, копипастнул отправку частиц.
PacketParticleMP без изменений.
PacketFire изменен минимально
Далее отправляю пакеты
Если отправляю так
Не происходит просто ничего.
Если отправлять по ПКМ из предмета, то вылетает сервер.
В логе ссылка на строку отправки пакета.
Тупо копи-паст.
Только подправил в файле "LocationDoublePacket"
Строку
Код:
return new NetworkRegistry.TargetPoint(world.provider.getDimension(), x, y, z, updateDistance);
Код:
return new NetworkRegistry.TargetPoint(world.provider.dimensionId, x, y, z, updateDistance);
PacketParticleMP без изменений.
PacketFire изменен минимально
Код:
public class PacketFire extends LocationDoublePacket<PacketFire>
{
public PacketFire(){}
/**
* Данный конструктор отвечает за получение и отправку наследнику
* позиции игрока на сервере. Что во много раз нам упростит
* отправку пакетов методом sendToAllAround.
* @param x - Позиция по X
* @param y - Позиция по Y
* @param z - Позиция по X
*/
public PacketFire(final double x, final double y, final double z)
{
super(x, y, z);
}
@Override
public void handleClientSide(PacketFire message, EntityPlayer player)
{
double x, y, z, xSpeed, ySpeed, zSpeed;
final double r = 0.4;//Радиус от игрока.
for (float l = 0; l < 2 * Math.PI; l += 2 * Math.PI / 50)
{
/**
* Здесь я бы хотел, чтобы Вы обратили внимание на то, что позиция игрока
* берётся не от EntityPlayer, а от нашего пакета, message.y/x/z
* Если мы вместо message.x/y/z укажем player.PosX/Y/Z то частицы будут
* отображаться у другого игрока на нём, а не на вас. Т.е. будет создаваться
* видимость того, что это он спавнит частицы, а не вы.
*/
x = message.x + r * Math.cos(l);
y = message.y;
z = message.z + r * Math.sin(l);
xSpeed = (x - message.x) * 0.2D;
ySpeed = 0.0D;
zSpeed = (z - message.z) * 0.2D;
/**
* Данный метод(spawnParticles) может отличаться в зависимости от версии mc!
* @param EnumParticleTypes.FLAME - Это частицы, которые мы спавним.
* @param x - Позиция игрока по X.
* @param y - Позиция игрока по Y.
* @param z - Позиция игрока по Z.
* @param xSpeed - Скорость движения частиц по X.
* @param ySpeed - Скорость движения частиц по Y.
* @param zSpeed - Скорость движения частиц по Z.
*/
player.worldObj.spawnParticle("flame", x, y, z, xSpeed, ySpeed, zSpeed);
}
}
public void handleServerSide(PacketFire message, EntityPlayer player) {}
}
Далее отправляю пакеты
Код:
NetworkHandler.sendToServer(new PacketParticlesMP());
Если отправляю так
Код:
@SubscribeEvent
public void onLivingUpdateEvent(LivingUpdateEvent event)
{
NetworkHandler.sendToServer(new PacketParticlesMP());
}
Если отправлять по ПКМ из предмета, то вылетает сервер.
В логе ссылка на строку отправки пакета.
Код:
[21:23:31] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
at mod.items.wizardstaff1.onItemRightClick(wizardStaff1.java:46) ~[wizardStaff1.class:?]
at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:164) ~[ItemStack.class:?]
at net.minecraft.server.management.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:345) ~[ItemInWorldManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:576) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:349) ~[DedicatedServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.entity.EntityClientPlayerMP
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_101]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_101]
... 13 more
Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/entity/EntityClientPlayerMP for invalid side SERVER
at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:50) ~[forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar:?]
at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_101]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_101]
... 13 more