Jump to content

SOLVED [1.19.3] Spawn rockets around player.


chxr

Recommended Posts

I'm having a tiny bit of trouble getting rockets around the player to just... well go off and explode

I don't exactly know if the rendering of the explosion is exclusively client-side or if I'm not understanding the tags correctly

As far as I understand, there is a tag containing all the data for the explosion, then the rest of the tags are added. There is also the FIREWORK_STAR but I don't know if I should take it into account. I've been looking in the Rocket Recipe and and Entity as well as the item but I'm not getting anything clear out of it. I have this code now (which is obviously bad-) Any tips on how to move forward?

 				ItemStack itemstack = new ItemStack(Items.FIREWORK_ROCKET);
                CompoundTag compoundtag = itemstack.getOrCreateTagElement("Fireworks");
                ListTag listtag = new ListTag();

                ItemStack itemstack2 = new ItemStack(Items.FIREWORK_STAR);
                CompoundTag compoundtag1 = itemstack2.getTagElement("Explosion");
                listtag.add(compoundtag1);
                itemstack2.setTag(compoundtag1);

                compoundtag.putByte("Flight", (byte)1);
                compoundtag.put("Explosions", listtag);
                itemstack.setTag(compoundtag);
                itemstack.setTag(compoundtag1);

                // Create and spawn the firework rocket entity
                double x = pos.getX() + (new Random().nextDouble() * 20 - 10);

                double z = pos.getZ() + (new Random().nextDouble()  * 20 - 10);
                BlockPos ypos = new BlockPos(x, 350, z);
                while (ypos.getY() > -64 && world.isEmptyBlock(ypos)) {
                    ypos = ypos.below();
                }
                double y = ypos.above().getY();
                FireworkRocketEntity rocket = new FireworkRocketEntity(world, x, y, z, ItemStack.EMPTY);
                world.addFreshEntity(rocket);

 

Edited by chxr
Link to comment
Share on other sites

Here is my code on doing some similar summoning with data. 

private void spawnPreview(boolean invis) {
	CompoundTag extraNBT = new CompoundTag();
	extraNBT.putBoolean("NoGravity", true);
	extraNBT.putBoolean("Invisible", invis);
	extraNBT.putBoolean("ShowArms", true);
	extraNBT.putBoolean("NoBasePlate", true);
	preview = new ArmorStand(this.minecraft.player.getLevel(), 0, 0, 0);
	preview.load(extraNBT);
}

I modified it slightly to get the right point across, but you need to add data to the summoned entity.

I'm not good at modding, but at least I can read a crash report (well enough). That's something, right?

Link to comment
Share on other sites

22 hours ago, Hipposgrumm said:

Here is my code on doing some similar summoning with data. 

private void spawnPreview(boolean invis) {
	CompoundTag extraNBT = new CompoundTag();
	extraNBT.putBoolean("NoGravity", true);
	extraNBT.putBoolean("Invisible", invis);
	extraNBT.putBoolean("ShowArms", true);
	extraNBT.putBoolean("NoBasePlate", true);
	preview = new ArmorStand(this.minecraft.player.getLevel(), 0, 0, 0);
	preview.load(extraNBT);
}

I modified it slightly to get the right point across, but you need to add data to the summoned entity.

So is it the load what I'm missing? Now the rockets wont spawn hmm. I'll keep trying and report back if I get something

Link to comment
Share on other sites

Posted (edited)

Ok so in the end it was that I did not understand how the tags on the item and entity worked. I was trying to bulk add all the tags (including item id and stack count) directly to the rocket. but turns out that the fireworks go on the rocket item and the extra lifetime tag goes on the entity, if I understood correctly. So it ends up looking something like this:

		ListTag explosionsList = new ListTag();
                CompoundTag explosionsTag = new CompoundTag();
                explosionsTag.putByte("Type", (byte) 3);
                explosionsTag.putByte("Flicker", (byte) 0);
                explosionsTag.putByte("Trail", (byte) 1);
                explosionsTag.putIntArray("Colors", new int[] {5635925});
                explosionsTag.putIntArray("FadeColors", new int[] {11141120});
				//List of explosion parameters (I just copied from a /summon example to test it)
                explosionsList.add(explosionsTag);
				//There might be multiple customized explosions, so they go in a list

                CompoundTag fireworksTag = new CompoundTag();
                fireworksTag.putInt("Flight", 2);
                fireworksTag.put("Explosions", explosionsList);
                // Flight:2,Explosions:[{Type:3,Flicker:0,Trail:1,Colors:[I;5635925],FadeColors:[I;11141120]}]
				//The whole firework data, including how high up will it go, go in a higher nested tag

				//NOW we create a rocket item stack and add ONLY the fireworks tag to it. The rest of the needed tags will be read for the entity later
                ItemStack fireworkItem = new ItemStack(Items.FIREWORK_ROCKET);
                CompoundTag fireWorkitemTag = fireworkItem.getOrCreateTag();
                fireWorkitemTag.put("Fireworks", fireworksTag);
                // (The full item tag will have the item id and the stack Count) Fireworks:{Flight:2,Explosions:[{Type:3,Flicker:0,Trail:1,Colors:[I;5635925],FadeColors:[I;11141120]}]}              

                // Create and spawn the firework rocket entity
                double x = pos.getX() + (new Random().nextDouble() * 20 - 10);

                double z = pos.getZ() + (new Random().nextDouble()  * 20 - 10);
                BlockPos ypos = new BlockPos(x, 350, z);
                while (ypos.getY() > -64 && world.isEmptyBlock(ypos)) {
                    ypos = ypos.below();
                }
                double y = ypos.above().getY();

				//Here we use the already crated rocket itemstsack to feed the entity: It will read all the tags (Including the needed ID and stackcount from the stack itself) Lastly, we also specify the lifetime of the rocket. This goes directly before the item data.
               FireworkRocketEntity rocket = new FireworkRocketEntity(world, x, y, z, fireworkItem);
                CompoundTag fireworkEntityTag = new CompoundTag();
                fireworkEntityTag.putInt("LifeTime", 40);
                rocket.addAdditionalSaveData(fireworkEntityTag);
                // LifeTime:40,FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Flight:2,Explosions:[{Type:3,Flicker:0,Trail:1,Colors:[I;5635925],FadeColors:[I;11141120]}]}}} This is what the full /summon command looks like and how the order of the tags ends up looking like (I think)
                world.addFreshEntity(rocket); //Spawn the rocket entity

 

Edited by chxr
typos
Link to comment
Share on other sites

  • chxr changed the title to SOLVED [1.19.3] Spawn rockets around player.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Came here for the same reason. But for me it's the client. After following your instructions with the jar, I ended up with the following error. I assume to have chosen the right jar   -jar "${lminecraft_library_path}/net/minecraftforge/forge/1.20.4-49.0.3/forge-1.20.4-49.0.3-shim.jar"   Minecraft 1.20.4 Forge: 1.20.4 - 49.0.3   ;--- cut here --- [7.633s][info][class,load] cpw.mods.jarhandling.SecureJar$ModuleDataProvider source: file:/home/habibiboy/.minecraft/libraries/net/minecraftforge/securemodules/2.2.7/securemodules-2.2.7.jar [7.636s][info][class,load] java.security.CodeSigner source: jrt:/java.base [7.636s][info][class,load] java.nio.file.spi.FileSystemProvider$1 source: jrt:/java.base [7.637s][info][class,load] java.util.ServiceLoader source: shared objects file [7.639s][info][class,load] java.util.ServiceLoader$ModuleServicesLookupIterator source: shared objects file [7.639s][info][class,load] java.util.Spliterators$ArraySpliterator source: shared objects file [7.640s][info][class,load] java.util.Spliterators$1Adapter source: shared objects file [7.643s][info][class,load] java.util.Arrays$ArrayList source: shared objects file [7.648s][info][class,load] java.util.concurrent.CopyOnWriteArrayList$COWIterator source: shared objects file [7.649s][info][class,load] java.util.ServiceLoader$LazyClassPathLookupIterator source: shared objects file [7.649s][info][class,load] java.util.ServiceLoader$2 source: shared objects file [7.649s][info][class,load] java.util.ServiceLoader$3 source: shared objects file [7.652s][info][class,load] jdk.internal.module.ModulePatcher$PatchedModuleReader source: jrt:/java.base [7.654s][info][class,load] sun.net.www.protocol.jrt.Handler source: jrt:/java.base [7.663s][info][class,load] jdk.nio.zipfs.ZipFileSystemProvider source: jrt:/jdk.zipfs [7.667s][info][class,load] java.nio.file.FileSystemNotFoundException source: jrt:/java.base [7.672s][info][class,load] jdk.nio.zipfs.ZipFileSystem source: jrt:/jdk.zipfs [7.675s][info][class,load] java.lang.UnsupportedOperationException source: jrt:/java.base [7.676s][info][class,load] java.util.zip.ZipException source: jrt:/java.base [7.677s][info][class,load] java.nio.file.ProviderMismatchException source: jrt:/java.base [7.680s][info][class,load] java.nio.file.AccessMode source: jrt:/java.base [7.681s][info][class,load] java.nio.file.DirectoryStream$Filter source: jrt:/java.base [7.683s][info][class,load] java.nio.file.DirectoryStream source: jrt:/java.base [7.684s][info][class,load] java.nio.file.FileStore source: jrt:/java.base [7.688s][info][class,load] java.util.concurrent.Executor source: shared objects file [7.688s][info][class,load] java.util.concurrent.ExecutorService source: shared objects file [7.690s][info][class,load] java.nio.channels.AsynchronousChannel source: jrt:/java.base [7.690s][info][class,load] java.nio.channels.AsynchronousFileChannel source: jrt:/java.base [7.691s][info][class,load] java.util.ServiceLoader$1 source: shared objects file [7.692s][info][class,load] java.util.ServiceLoader$Provider source: shared objects file [7.692s][info][class,load] java.util.ServiceLoader$ProviderImpl source: shared objects file [7.693s][info][class,load] jdk.internal.reflect.DirectConstructorHandleAccessor source: shared objects file [7.695s][info][class,load] jdk.internal.jrtfs.JrtFileSystemProvider source: jrt:/java.base [7.699s][info][class,load] java.util.Collections$EmptyEnumeration source: shared objects file [7.699s][info][class,load] jdk.internal.loader.BuiltinClassLoader$1 source: shared objects file [7.700s][info][class,load] java.lang.CompoundEnumeration source: shared objects file [7.701s][info][class,load] jdk.internal.loader.URLClassPath$1 source: shared objects file [7.702s][info][class,load] sun.net.www.protocol.jrt.JavaRuntimeURLConnection source: jrt:/java.base [7.710s][info][class,load] sun.net.www.protocol.jrt.JavaRuntimeURLConnection$$Lambda/0x00007f5d70055728 source: sun.net.www.protocol.jrt.JavaRuntimeURLConnection [7.719s][info][class,load] sun.net.www.protocol.jrt.JavaRuntimeURLConnection$1 source: jrt:/java.base [7.720s][info][class,load] jdk.internal.jimage.ImageBufferCache source: jrt:/java.base [7.722s][info][class,load] jdk.internal.jimage.ImageBufferCache$1 source: jrt:/java.base [7.723s][info][class,load] jdk.internal.jimage.ImageBufferCache$2 source: jrt:/java.base [7.724s][info][class,load] java.util.AbstractMap$SimpleEntry source: jrt:/java.base [7.727s][info][class,load] java.util.LinkedHashMap$LinkedKeySet source: jrt:/java.base [7.731s][info][class,load] java.util.LinkedHashMap$LinkedHashIterator source: shared objects file [7.731s][info][class,load] java.util.LinkedHashMap$LinkedKeyIterator source: jrt:/java.base [7.732s][info][class,load] java.util.Collections$UnmodifiableList source: shared objects file [7.732s][info][class,load] java.util.Collections$UnmodifiableRandomAccessList source: shared objects file [7.736s][info][class,load] java.lang.invoke.LambdaForm$DMH/0x00007f5d7000c400 source: __JVM_LookupDefineClass__ [7.741s][info][class,load] cpw.mods.jarhandling.impl.Jar$$Lambda/0x00007f5d7000adb0 source: cpw.mods.jarhandling.impl.Jar [7.746s][info][class,load] cpw.mods.jarhandling.impl.Jar$$Lambda/0x00007f5d7000aff8 source: cpw.mods.jarhandling.impl.Jar [7.748s][info][class,load] java.lang.ExceptionInInitializerError source: jrt:/java.base [7.749s][info][class,load] java.lang.StackTraceElement$HashedModules source: jrt:/java.base [7.751s][info][class,load] java.lang.invoke.WrongMethodTypeException source: jrt:/java.base [7.751s][info][class,load] java.lang.reflect.InvocationTargetException source: jrt:/java.base Exception in thread "main" [7.758s][info][class,load] java.lang.Throwable$PrintStreamOrWriter source: jrt:/java.base [7.759s][info][class,load] java.lang.Throwable$WrappedPrintStream source: jrt:/java.base java.lang.reflect.InvocationTargetException     at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)     at java.base/java.lang.reflect.Method.invoke(Method.java:580)     at net.minecraftforge.bootstrap.shim.Main.main(Main.java:94) Caused by: java.lang.ExceptionInInitializerError     at cpw.mods.jarhandling.SecureJar.from(SecureJar.java:64)     at cpw.mods.jarhandling.SecureJar.from(SecureJar.java:60)     at net.minecraftforge.bootstrap.ClassPathHelper.getCleanedClassPathImpl(ClassPathHelper.java:178)     at net.minecraftforge.bootstrap.ClassPathHelper.getCleanedClassPath(ClassPathHelper.java:46)     at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:28)     at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:18)     at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)     ... 2 more Caused by: java.lang.IllegalStateException: Couldn't find UnionFileSystemProvider     at cpw.mods.jarhandling.impl.Jar.lambda$static$1(Jar.java:48)     at java.base/java.util.Optional.orElseThrow(Optional.java:403)     at cpw.mods.jarhandling.impl.Jar.<clinit>(Jar.java:48)     ... 9 more [7.783s][info][class,load] java.util.IdentityHashMap$IdentityHashMapIterator source: shared objects file [7.784s][info][class,load] java.util.IdentityHashMap$KeyIterator source: shared objects file [7.787s][info][class,load] java.lang.Shutdown source: shared objects file [7.789s][info][class,load] java.lang.Shutdown$Lock source: shared objects file ;--- cut here ---   I tried various things here. Java 17, then Java 21, Searched for missing objects, used strace -ff java ... and so on. The securejar class is there, accessible, permissions all fine. Still running into this issue.
    • sorry for the late answer, I tried it but i hadthe same result crash reportlog
    • Your post triggered the anti-spam which hid it from everyone. Please share a *link* to your debug.log and/or crash report on https://paste.ee to avoid this in future so that you don't have to wait so long for help.
  • Topics

×
×
  • Create New...

Important Information

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