Jump to content

[1.15.2] Command tree examples


squidlex

Recommended Posts

I'm looking to update a command tree I made for 1.12 to 1.15.2.

Obviously Commands have changed to the CommandDispatcher now, so does anybody know of any good/simple source code I could look at for a basic command tree?

 

Thanks for your help!

Link to comment
Share on other sites

Update:

I'm definitely misunderstanding this. Here's my code:

public class Command {

	public static void register(CommandDispatcher<CommandSource> dispatcher) {

		final LiteralArgumentBuilder<CommandSource> root = Commands.literal("commandtree");
		root.then(Commands.literal("edit_a_float").then(Commands.argument("float", FloatArgumentType.floatArg()))).executes(source -> {
			return editPower(source.getSource(), source.getSource().asPlayer(), FloatArgumentType.getFloat(source, "float"));
			}).then(Commands.argument("player", EntityArgument.player())).executes(source -> {
			return editPower(source.getSource(), EntityArgument.getPlayer(source, "player"), FloatArgumentType.getFloat(source, "float"));
			});	
		root.then(Commands.literal("edit_a_cooldown").then(Commands.argument("ticks", IntegerArgumentType.integer()))).executes(source -> {
			return editCooldown(source.getSource(), source.getSource().asPlayer(), IntegerArgumentType.getInteger(source, "ticks"));
			}).then(Commands.argument("player", EntityArgument.player())).executes(source -> {
			return editCooldown(source.getSource(), EntityArgument.getPlayer(source, "player"), IntegerArgumentType.getInteger(source, "ticks"));
			});
		dispatcher.register(root);
	}

	private static int editPower(CommandSource source, PlayerEntity player, float amount) {
		System.out.println("Adjusted power by " + amount + "!");
		return 1;
	}
	
	private static int editCooldown(CommandSource source, PlayerEntity player, int ticks) {
		System.out.println("Adjusted cooldown by " + ticks + "!");
		return 1;
	}
}

 

When entering my command, edit_a_float and edit_a_cooldown are recommended, but it also recommends usernames and all the @s.

 

When typing in a command I get the message 'Unknown Command' or 'Incorrect argument for command'.

Please could someone explain to me where I'm going wrong?

Edited by squidlex
Link to comment
Share on other sites

Because that's how commands work. @p and not supplying a target means that it affects the player typing the command. But what if you wanted to affect a different player?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

33 minutes ago, Draco18s said:

Because that's how commands work. @p and not supplying a target means that it affects the player typing the command. But what if you wanted to affect a different player?

Thanks for your reply, but I'm now seeing either I worded my question poorly or I don't quite understand your reply.

It doesn't sugget @p or anything like that at all when I type /commandtree edit_a_float but it does when I type /commandtree.

 

When I type /commandtree edit_a_float and then type anything after that it returns Unknown Command.

Link to comment
Share on other sites

I misunderstood the problem.  I am not sure, then.

  • Like 1

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

If my understanding is correct, .executes() needs to put inside the bracket of the .then (all "connected" action needs to do that)which should look like this

		root.then(Commands.literal("edit_a_float")
                  .then(Commands.argument("float", FloatArgumentType.floatArg()) -> removed two brackets here
          .executes(source -> {
			return editPower(source.getSource(), source.getSource().asPlayer(), FloatArgumentType.getFloat(source, "float"));
			}))); -> added two brackets here

 

Edited by poopoodice
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, poopoodice said:

If my understanding is correct, .executes() needs to put inside the bracket of the .then (all "connected" action needs to do that)which should looks like this


		root.then(Commands.literal("edit_a_float")
                  .then(Commands.argument("float", FloatArgumentType.floatArg()) -> removed two brackets here
          .executes(source -> {
			return editPower(source.getSource(), source.getSource().asPlayer(), FloatArgumentType.getFloat(source, "float"));
			}))); -> added two brackets here

 

That was the problem!

Thanks for spotting that, I'm really bad at spotting little errors like this.

 

Thank you so much I can finally finish porting my mod! :)

Link to comment
Share on other sites

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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://www.dropbox.com/scl/fi/r92sbb0ywoc6d0wwzx8wj/crash-2023-08-17_11.43.40-server.txt?rlkey=do2x4ategaht2czeezi39v7cx&dl=0 Is there a way to fix it without my world crashing
    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI Prediksi HK merupakan salah satu metode meracik angka yang sangat dibutuhkan para pecinta togel Hongkong untuk mendapatkan angka jitu. Prediksi Hongkong akan memberikan anda racikan yang sudah dibuat oleh para master angka togel dan akan dibagikan melalui situs Prediksi HK ini. Namun sebelum itu kami menegaskan yang namanya prediksi tidak ada yang sempurna, karena yang sempurna hanya milik Tuhan saja. Kami juga tidak mengatakan bahwa prediksi yang kami berikan itu asal dan tidak berdasar. Kami memberikan Bocoran HK malam ini pastinya melalui berbagai macam rumus dan dibantu oleh peracik angka togel handal. Jadi anda tidak ada salahnya juga jika menggunakan Prediksi Bocoran Togel Hongkong yang akan kami berikan disitus ini. Selaku situs Prediksi Hongkong jitu malam ini, kami juga memberikan saran kepada anda jika ingin mencari prediksi togel HK yang bagus jangan asal memilih. Karena banyak situs palsu yang tersebar di internet dan hanya memberikan angka prediksi Hk asal dan tidak berdasar. Maka kami sarankan anda bisa menggunakan Bocoran Togel Hongkong di situs kami ini sebagai acuan memilih angka yang ingin dipasang. Bocoran HK Paling Jitu Malam Ini Bocoran Hk Malam Ini tentu saja sangat membantu untuk para member yang kesulitan untuk mendapatkan angka racikan togel HK malam ini. Tapi tenang saja kami disini akan memberikan Prediksi Bocoran HK Jitu secara gratis untuk anda, sehingga anda tidak perlu lagi khawatir jika ingin mencari situs prediksi togel HK yang akurat dan gratis. Tetapi kami juga mengingatkan untuk anda jika sering mendapatkan jackpot dari bocoran togel hongkong malam ini yang ada di situs ini, kami berharap anda dapat membagikannya juga kepada kerabat dan teman anda yang memiliki hobi yang sama yaitu bermain togel online. Dengan saling berbagi tidak ada ruginya bahkan kita bisa mengalahkan bandot togel bersama-sama. Forum Master Prediksi Hongkong Malam Ini Terpercaya Apakah anda sedang mencari Master Prediksi HK yang akan memberikan racikan atau bocoran togel khususnya pasaran Hongkong? Maka disini adalah tempat yang tepat jika anda mencari racikan Prediksi Hongkong dari master togel terpercaya. Pada kesempatan hari ini Master Prediksi Togel Hongkong telah memberikan racikannya yang dapat anda lihat dalam tabel bocoran HK di atas. Kami sangat senang jika anda selalu mengunjungi forum atau situs prediksi HK kami ini. Seluruh Bocoran HK yang telah kami berikan tentu saja gratis dan tanpa dipungut biaya apapun. Karena kami membuat situs prediksi ini murni demi membantu para pemain togel yang bingung untuk mencari angka kuat untuk dipasangkan dalam pasaran togel Hongkong Malam Ini. Manfaat Prediksi Togel Hongkong Untuk Para Togelers Prediksi Togel Hongkong tentu saja sangat bermanfaat bagi setiap pemain togel online yang menggunakannya. Manfaat yang paling menonjol yaitu anda bisa mencocokkan angka anda sendiri dengan angka yang telah diracik oleh para master togel jitu. Selain itu apabila anda tidak memiliki angka sama sekali yang ingin dipasangkan, anda dapat menggunakan hasil racikan Bocoran HK dalam situs ini untuk dijadikan angka taruhan. Jadi jangan sampai kelewatan segala jenis prediksi togel hongkong yang sudah kami bagikan pada hari ini sehingga anda mendapatkan angka jitu yang ingin digunakan. Sekali lagi kami ingatkan bahwa setiap prediksi yang diberikan tidak kami jamin 100% akan tembus, tetapi setidaknya menambah peluang kemenangan. Sekian pembahasan kami dan kami harapkan anda puas dengan prediksi hk yang sudah kami berikan di situs ini. Semoga kalian jackpot dan salam togel mania. Angka Main: 5746 Angka Ikut: 8463 Colok Bebas: 6 Kepala: 5 7 | Ekor: 8 3 Twin: 44 / 66 ANGKA JITU 2D 57*54*56*58*53*75*74*76* 78*73*45*47*46*48*43*65* SHIO: KAMBING Angka Main: 4092 Angka Ikut: 6410 Colok Bebas: 4 Kepala: 6 9 | Ekor: 1 2 Twin: 44 / 00 ANGKA JITU 2D 40*49*42*46*41*04*09*02* 06*01*94*90*92*96*91*24* SHIO: TIKUS Angka Main: 6128 Angka Ikut: 4368 Colok Bebas: 8 Kepala: 1 4 | Ekor: 3 2 Twin: 66 / 88 ANGKA JITU 2D 61*62*68*64*63*16*12*18* 14*13*26*21*28*24*23*86* SHIO: HARIMAU Angka Main: 1495 Angka Ikut: 5871 Colok Bebas: 5 Kepala: 8 9 | Ekor: 7 4 Twin: 11 / 55 ANGKA JITU 2D 14*19*15*18*17*41*49*45* 48*47*91*94*95*98*97*51* SHIO: AYAM Angka Main: 9124 Angka Ikut: 4859 Colok Bebas: 9 Kepala: 5 1 | Ekor: 2 8 Twin: 99 / 44 ANGKA JITU 2D 91*92*94*98*95*19*12*14* 18*15*29*21*24*28*25*49* SHIO: KERBAU Angka Main: 2095 Angka Ikut: 8152 Colok Bebas: 2 Kepala: 1 0 | Ekor: 9 8 Twin: 22 / 55 ANGKA JITU 2D 20*29*25*28*21*02*09*05* 08*01*92*90*95*98*91*52* SHIO: KUDA
    • Hm. I did try adding that in the user_jvm_args.txt but I get this:  Error: Could not find or load main class C:Program FilesJavajdk-17.0.9binjavaw.exe Caused by: java.lang.ClassNotFoundException: C:Program FilesJavajdk-17.0.9binjavaw.exe Press any key to continue . . . I tried both with "\jdk-17\" (as it appears in the program files) as well as "\jdk-17.0.9\"  No luck. am I placing it in the wrong file? Could the second part be incorrect? 
    • Hello, I am trying to make a drowned transform into a custom mod I made (called Hot Drowned) when it goes through a magma bubble column. I already have the mob fully working in game, but the code for the transformation is giving me trouble. Since I can't edit the drowned code, I tried to make it check on Living Tick Event for a drowned that is doing the ticking and check its position from there in relation to a magma block but its not working. My code is below, thank you in advance. @SubscribeEvent(priority = EventPriority.HIGHEST) public void entityJoinWorld(LivingEvent.LivingTickEvent event, ServerLevel pServerLevel) { System.out.println("Entity Ticked"); Entity entity = event.getEntity(); if (entity.isAlive() && entity instanceof Drowned) { Drowned drowned = (Drowned) entity; BlockPos bPos = BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)); BlockState bPosBlock = pServerLevel.getBlockState(bPos); int dHieght = bPos.getY(); if (bPosBlock == Blocks.WATER.defaultBlockState() || bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); }else { for (int x = dHieght + 64; x > 0; x--) { bPos = BlockPos.of(bPos.below().get(Direction.Axis.Y)); bPosBlock = pServerLevel.getBlockState(bPos); System.out.println(bPosBlock); if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()) { ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); } else { return; } } } } } } }  
  • Topics

×
×
  • Create New...

Important Information

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