Jump to content

Pale Mannie

Members
  • Posts

    6
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Pale Mannie's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. In the Forge docs stands the following: Here is the Link for the whole Changes from 1.20.6 to 1.21: https://gist.github.com/ChampionAsh5357/d895a7b1a34341e19c80870720f9880f I experimented around in my mods and they work
  2. An uneducated guess: can you move the layers by a 1000th in any direction? It works on custom models via Blockbench.
  3. What version are you on? Look up on Global Loot Modifiers
  4. I have found a rather simple solution to all this after actually combing through the source codes of Mr Crayfishs Gun Mod and Timeless and Classics Guns Zero. They execute the sounds and particles not in the custom packet class itself but externally. You simply create another class (put it anywhere in your project in main), create a method and put in the desired sounds and particles or whatever you want in it. Create multiple methods for each individual task if you need to. You execute your code in the C2S Packet as follows: public class SpittingC2SPacket { public SpittingC2SPacket(){ } public SpittingC2SPacket(FriendlyByteBuf buf){ } public void toBytes(FriendlyByteBuf buf){ } public boolean handle(Supplier<NetworkEvent.Context> supplier){ NetworkEvent.Context context = supplier.get(); context.enqueueWork(()-> { ServerPlayer player = context.getSender(); ServerLevel sevel = player.getLevel(); RandomSource rdm = RandomSource.create(); //Entity SpuckeEntity spit = new SpitEntity(sevel, player); float r = (float)rdm.nextInt(3500,5000)/10000; float y = player.getYRot(); float x = player.getXRot(); float z = 0f; spucke.shootFromRotation(player, x, y, z, r, 1f); sevel.addFreshEntity(spit); //External handler ///////////////////////////////////////////////////////////////// ServerPlayHandler.handleSpitting(player); ///////////////////////////////////////////////////////////////// }); return true; } } And your external handler class can look like this: public class ServerPlayHandler { public static void handleSpitting(ServerPlayer player){ if(player.isSpectator()) return; Level lvl = player.level; //Sounds double posX = player.getX(); double posY = player.getY() + player.getEyeHeight(); double posZ = player.getZ(); float r = 0.8f + lvl.random.nextFloat() * 0.3f; lvl.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.LLAMA_SPIT, SoundSource.BLOCKS, 1f, r); //Particles Vec3 vec3 = player.getViewVector(1f); Vec3 MausPos = player.getEyePosition(); Vec3 SchauWinkel = player.getLookAngle(); double x = player.getX() + vec3.x/4; double y = MausPos.y + vec3.y/4; double z = player.getZ() + vec3.z/4; if(lvl instanceof ServerLevel slevel) { slevel.sendParticles(ParticleTypes.SPIT, x, y, z, 3, 0d, 0d, 0d, 0.15d); } } } It works now. On client as well as on a server
  5. I have now attempted replacing Player player = Minecraft.getInstance().player; with Player player = NetworkEvent.Context.getSender() and it doesn't work on either side.This error was thrown: Attempted to load class net/minecraft/client/multiplayer/ClientLevel for invalid dist DEDICATED_SERVER. Figures since NetworkEvent.Context.getSender() is a ServerPlayer Variable. So is my guess.
  6. I have a keybind where you spit like a llama. On singleplayer both the entity and particle spawn and it's sound is played (https://youtu.be/bpxnFDuWw_I). But on a server only the entity is spawned and nothing else (https://youtu.be/veVQ4zSqnIA), no particles nor sound. Upon starting the server I have noticed this error in the window (https://postimg.cc/K3KDCpMY), don't know if it's relevant. The server works fine but when I want to spit the following pops up in the serverlog '''Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER''' (https://postimg.cc/LqTDP1Sm). I have prepared the following code of the Server-to-Client packet class which I have made to spawn mentioned particles and sounds. package mett.palemannie.tabakmod.networking.packets; import net.minecraft.client.Minecraft; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SpuckEffektS2CPacket { public SpuckEffektS2CPacket(){ } public SpuckEffektS2CPacket(FriendlyByteBuf buf){ } public void toBytes(FriendlyByteBuf buf){ } public boolean handle(Supplier<NetworkEvent.Context> supplier){ NetworkEvent.Context context = supplier.get(); context.enqueueWork(()-> { Player player = Minecraft.getInstance().player; //Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Level level = Minecraft.getInstance().level; RandomSource rdm = RandomSource.create(); float r = rdm.nextInt(80, 120) / 100f; player.playSound(SoundEvents.LLAMA_SPIT, 1f, r); Vec3 MausPos = player.getEyePosition(); Vec3 SchauWinkel = player.getLookAngle(); level.addParticle(ParticleTypes.SPIT, true, MausPos.x, MausPos.y, MausPos.z, SchauWinkel.x/4, SchauWinkel.y/4, SchauWinkel.z/4); }); return true; } } Is there an alternative to Minecraft.getInstance().player;? dumb question. I have looked at other mods (MrCrayfish's Gun Mod, Ars Noveau, Apotheosis) on how they handle such server-to-client sound and particles but I haven't got any wiser.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.