Jump to content

Vanilla commands imitation


Frostmourneee

Recommended Posts

Hi.
I have a custom entity minecart_new and I can summon it in minecraft by typing /summon minecart:minecart_new. How can I imitate this command via forge? What code should I write? 
In minecraft I want it to be as follows: when player right click on custom item then command /summon minecart:minecart_new should be imitated. 
So my code now is 

@SubscribeEvent
	public void minecartItemRightClick(RightClickItem event) {
		
		if (event.getItemStack().getItem() == ItemInit.MINECARTNEW_ITEM.get()) {
			//imitate /summon minecart:minecart_new
		}
		
	}

Event hooking works fine I think. What should I type instead of //imitate /summon minecart:minecart_new? Thanks in advance!

Link to comment
Share on other sites

16 minutes ago, Luis_ST said:

show your Entity class and your registration 

My entity class extends AbstractMinecart and code in it is almost equal to FurnaceMinecart class. 
 

public class Minecart_new extends AbstractMinecart {

    private static final EntityDataAccessor<Boolean> DATA_ID_FUEL = SynchedEntityData.defineId(MinecartFurnace.class, EntityDataSerializers.BOOLEAN);
    private int fuel;
    public double xPush;
    public double zPush;
    private static final Ingredient INGREDIENT = Ingredient.of(Items.APPLE, Items.CHARCOAL);

    public Minecart_new(EntityType<? extends Minecart_new> p_38552_, Level p_38553_) {
        super(p_38552_, p_38553_);
    }

    public AbstractMinecart.Type getMinecartType() {
        return AbstractMinecart.Type.FURNACE;
    }

    @Override
    protected void defineSynchedData() {
        super.defineSynchedData();
        this.entityData.define(DATA_ID_FUEL, false);
    }

    @Override
    public void tick() {
        super.tick();
        if (!this.level.isClientSide()) {
            if (this.fuel > 0) {
                --this.fuel;
            }

            if (this.fuel <= 0) {
                xPush = 0.0D;
                zPush = 0.0D;
            }

            this.setHasFuel(this.fuel > 0);
        }

        if (this.hasFuel() && this.random.nextInt(4) == 0) {
            this.level.addParticle(ParticleTypes.LARGE_SMOKE, this.getX(), this.getY() + 0.8D, this.getZ(), 0.0D, 0.0D, 0.0D);
        }

    }

    @Override
    protected double getMaxSpeed() {
        return (this.isInWater() ? 3.0D : 4.0D) / 20.0D;
    }

    @Override
    public float getMaxCartSpeedOnRail() {
        return 0.2f;
    }

    @Override
    public void destroy(DamageSource p_38560_) {
        super.destroy(p_38560_);
        if (!p_38560_.isExplosion() && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) {
            this.spawnAtLocation(Blocks.FURNACE);
        }

    }

    @Override
    protected void moveAlongTrack(BlockPos p_38569_, BlockState p_38570_) {
        super.moveAlongTrack(p_38569_, p_38570_);
        Vec3 vec3 = this.getDeltaMovement();
        double d2 = vec3.horizontalDistanceSqr();
        double d3 = this.xPush * this.xPush + this.zPush * this.zPush;
        if (d3 > 1.0E-4D && d2 > 0.001D) {
            double d4 = Math.sqrt(d2);
            double d5 = Math.sqrt(d3);
            this.xPush = vec3.x / d4 * d5;
            this.zPush = vec3.z / d4 * d5;
        }

    }

    @Override
    protected void applyNaturalSlowdown() {
        double d0 = this.xPush * this.xPush + this.zPush * this.zPush;
        if (d0 > 1.0E-7D) {
            d0 = Math.sqrt(d0);
            this.xPush /= d0;
            this.zPush /= d0;
            Vec3 vec3 = this.getDeltaMovement().multiply(0.8D, 0.0D, 0.8D).add(this.xPush, 0.0D, this.zPush);
            if (this.isInWater()) {
                vec3 = vec3.scale(0.1D);
            }

            this.setDeltaMovement(vec3);
        } else {
            this.setDeltaMovement(this.getDeltaMovement().multiply(0.98D, 0.0D, 0.98D));
        }

        super.applyNaturalSlowdown();
    }

    @Override
    public InteractionResult interact(Player p_38562_, InteractionHand p_38563_) {
        InteractionResult ret = super.interact(p_38562_, p_38563_);
        if (ret.consumesAction()) return ret;
        ItemStack itemstack = p_38562_.getItemInHand(p_38563_);
        if (INGREDIENT.test(itemstack) && this.fuel+ 3600 <= 32000) {
            if (!p_38562_.getAbilities().instabuild) {
                itemstack.shrink(1);
            }

            this.fuel += 3600;
        }

        if (this.fuel > 0) {
            this.xPush = -(this.getX() - p_38562_.getX());
            this.zPush = -(this.getZ() - p_38562_.getZ());
        }

        return InteractionResult.sidedSuccess(this.level.isClientSide);
    }

    @Override
    protected void addAdditionalSaveData(CompoundTag p_38567_) {
        super.addAdditionalSaveData(p_38567_);
        p_38567_.putDouble("PushX", this.xPush);
        p_38567_.putDouble("PushZ", this.zPush);
        p_38567_.putShort("Fuel", (short)this.fuel);
    }

    @Override
    protected void readAdditionalSaveData(CompoundTag p_38565_) {
        super.readAdditionalSaveData(p_38565_);
        this.xPush = p_38565_.getDouble("PushX");
        this.zPush = p_38565_.getDouble("PushZ");
        this.fuel = p_38565_.getShort("Fuel");
    }


    protected boolean hasFuel() {
        return this.entityData.get(DATA_ID_FUEL);
    }


    protected void setHasFuel(boolean p_38577_) {
        this.entityData.set(DATA_ID_FUEL, p_38577_);
    }

    @Override
    public BlockState getDefaultDisplayBlockState() {
        return Blocks.FURNACE.defaultBlockState().setValue(FurnaceBlock.FACING, Direction.NORTH).setValue(FurnaceBlock.LIT, Boolean.valueOf(this.hasFuel()));
    }
/////////
    @Override
    public ItemStack getPickResult() {
        Item item = ItemInit.MINECARTNEW_ITEM.get();
        return new ItemStack(item);
    }
}

Registration of entity.

public class EntityInit {

    private EntityInit() {}

    public static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, minecart.MOD_ID);

    public static final RegistryObject<EntityType<Minecart_new>> MINECART_ENTITY = ENTITIES.register("minecart_new", () ->
            EntityType.Builder.of(Minecart_new::new, MobCategory.MISC).sized(0.98F, 0.7F)
                    .build(new ResourceLocation(minecart.MOD_ID,"minecart_new").toString()));


}

 

Link to comment
Share on other sites

10 minutes ago, diesieben07 said:

Have you looked at MinecartItem like you were told previously.?

Yes I have, maybe if you ask this question then you mean I should use MinecartItem. But it requires AbstractMinecart.Type and because of it I can't use it, if I use Type.FURNACE_MINECART then my item will connects to vanilla furnace_minecart, not my custom one. 
Maybe then I should ask "what should I do to have MinecartItem useful for me?", maybe I can use it, but do not know how.
Thanks in advance.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • "Minecraft APK is an absolute gem for mobile gaming enthusiasts. With its immersive pixelated world and limitless creative possibilities, it offers an unparalleled gaming experience on the go. Whether you're building magnificent structures, exploring vast landscapes, or engaging in thrilling multiplayer battles, Minecraft APK delivers endless hours of entertainment. The controls are intuitive, and the regular updates keep the game fresh and exciting. It's a must-have for any gaming aficionado looking to unleash their creativity and embark on extraordinary adventures right from their mobile device." https://apk-minecraft.com/
    • This is the Crash message that comes when it crashes and the mods im using. ---------------------------------------------------- jei-1.16.5-7.7.1.152.jar journeymap-1.16.5-5.8.5p5.jar OptiFine_1.16.5_HD_U_G8.jar Pixelmon-1.16.5-9.1.3-universal.jar ReAuth-1.16-Forge-4.0.4.jar ---------------------------------------------------- ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 5/30/23 9:24 PM Description: Rendering screen java.lang.ArrayIndexOutOfBoundsException: 0     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:977) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading} -- Screen render details -- Details:     Screen name: com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen     Mouse location: Scaled: (408, 302). Absolute: (1225.000000, 907.000000)     Screen size: Scaled: (640, 360). Absolute: (1920, 1080). Scale factor of 3.000000 -- Affected level -- Details:     All players: 1 total; [ClientPlayerEntity['SebPer2708'/551350, l='ClientLevel', x=-162.35, y=28.94, z=-208.94]]     Chunk stats: Client Chunk Cache: 225, 98     Level dimension: minecraft:safari     Level spawn location: World: (7461,68,-15650), Chunk: (at 5,4,14 in 466,-979; contains blocks 7456,0,-15664 to 7471,255,-15649), Region: (14,-31; contains chunks 448,-992 to 479,-961, blocks 7168,0,-15872 to 7679,255,-15361)     Level time: 1243445879 game time, 1255605750 day time     Server brand: forge arclight (Velocity)     Server type: Non-integrated multiplayer server Stacktrace:     at net.minecraft.client.world.ClientWorld.func_72914_a(ClientWorld.java:617) ~[?:?] {re:classloading,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2031) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:623) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 1736668104 bytes (1656 MB) / 4697620480 bytes (4480 MB) up to 5368709120 bytes (5120 MB)     CPUs: 8     JVM Flags: 10 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -XX:+IgnoreUnrecognizedVMOptions -Xmx5G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.34.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.34.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /OptiFine_1.16.5_HD_U_G8.jar OptiFine TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.34.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.34     FML Language Providers:          javafml@36.2         minecraft@1     Mod List:          forge-1.16.5-36.2.34-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.34-universal.jar                |Forge                         |forge                         |36.2.34             |DONE      |Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         journeymap-1.16.5-5.8.5p5 (1).jar                 |Journeymap                    |journeymap                    |5.8.5p5             |DONE      |Manifest: NOSIGNATURE         ReAuth-1.16-Forge-4.0.4.jar                       |ReAuth                        |reauth                        |4.0.4               |DONE      |Manifest: 3d:06:1e:e5:da:e2:ff:ae:04:00:be:45:5b:ff:fd:70:65:00:67:0b:33:87:a6:5f:af:20:3c:b6:a1:35:ca:7e         Pixelmon-1.16.5-9.1.3-universal.jar               |Pixelmon Mod                  |pixelmon                      |9.1.3               |DONE      |Manifest: NOSIGNATURE         jei-1.16.5-7.7.1.152.jar                          |Just Enough Items             |jei                           |7.7.1.152           |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 717af89e-5f3d-4e21-a252-816efbf74f7d     Launched Version: 1.16.5-forge-36.2.34     Backend library: LWJGL version 3.2.2 build 10     Backend API: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2 GL version 4.6.0 NVIDIA 526.86, NVIDIA Corporation     GL Caps: Using framebuffer using OpenGL 3.0     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fast     Resource Packs: mod_resources, vanilla     Current Language: English (US)     CPU: 8x Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz     OptiFine Version: OptiFine_1.16.5_HD_U_G8     OptiFine Build: 20210515-161946     Render Distance Chunks: 7     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 526.86     OpenGlRenderer: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 8  
    • Whenever I attempt to create a singleplayer world the world generation gets stuck in 0% and minecraft stops responding after a few seconds and I'm forced to close it. However, I am still able to play multiplayer servers Log: https://paste.gg/p/anonymous/aad7e1be3fc545359383677fbdc3c6e9
    • I have the same issue with no mod installed in 1.18.2 v40.2.6 and v40.2.7 (i don't have try previous version). I have too nothing unusual in the log or debug files (modified) I just try in 40.2.5 and water is placeable
  • Topics

×
×
  • Create New...

Important Information

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