|
8 | 8 | import com.box3lab.util.Box3ImportFiles; |
9 | 9 | import com.mojang.brigadier.arguments.BoolArgumentType; |
10 | 10 | import com.mojang.brigadier.arguments.StringArgumentType; |
| 11 | +import com.mojang.brigadier.arguments.IntegerArgumentType; |
11 | 12 | import com.mojang.brigadier.suggestion.SuggestionProvider; |
12 | 13 |
|
13 | 14 | import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; |
@@ -46,37 +47,71 @@ public static void register() { |
46 | 47 | .executes(context -> listBox3ImportFiles(context.getSource())) |
47 | 48 | .then(argument("fileName", StringArgumentType.word()) |
48 | 49 | .suggests(BOX3_FILE_SUGGESTIONS) |
| 50 | + // /box3import <fileName> |
49 | 51 | .executes(context -> executeBox3Import( |
50 | 52 | context.getSource(), |
51 | 53 | StringArgumentType.getString( |
52 | 54 | context, |
53 | 55 | "fileName"), |
| 56 | + 0, |
54 | 57 | false, |
55 | 58 | false)) |
56 | | - .then(argument("ignoreBarrier", |
57 | | - BoolArgumentType.bool()) |
| 59 | + // /box3import <fileName> <offsetY> |
| 60 | + .then(argument("offsetY", |
| 61 | + IntegerArgumentType.integer()) |
58 | 62 | .executes(context -> executeBox3Import( |
59 | 63 | context.getSource(), |
60 | 64 | StringArgumentType |
61 | | - .getString(context, |
| 65 | + .getString( |
| 66 | + context, |
62 | 67 | "fileName"), |
63 | | - BoolArgumentType.getBool( |
64 | | - context, |
65 | | - "ignoreBarrier"), |
| 68 | + IntegerArgumentType |
| 69 | + .getInteger( |
| 70 | + context, |
| 71 | + "offsetY"), |
| 72 | + false, |
66 | 73 | false)) |
67 | | - .then(argument("ignoreWater", |
| 74 | + // /box3import <fileName> |
| 75 | + // <offsetY> <ignoreBarrier> |
| 76 | + .then(argument("ignoreBarrier", |
68 | 77 | BoolArgumentType.bool()) |
69 | 78 | .executes(context -> executeBox3Import( |
70 | 79 | context.getSource(), |
71 | 80 | StringArgumentType |
72 | | - .getString(context, |
| 81 | + .getString( |
| 82 | + context, |
73 | 83 | "fileName"), |
| 84 | + IntegerArgumentType |
| 85 | + .getInteger( |
| 86 | + context, |
| 87 | + "offsetY"), |
74 | 88 | BoolArgumentType.getBool( |
75 | 89 | context, |
76 | 90 | "ignoreBarrier"), |
77 | | - BoolArgumentType.getBool( |
78 | | - context, |
79 | | - "ignoreWater"))))))); |
| 91 | + false)) |
| 92 | + // /box3import |
| 93 | + // <fileName> |
| 94 | + // <offsetY> |
| 95 | + // <ignoreBarrier> |
| 96 | + // <ignoreWater> |
| 97 | + .then(argument("ignoreWater", |
| 98 | + BoolArgumentType.bool()) |
| 99 | + .executes(context -> executeBox3Import( |
| 100 | + context.getSource(), |
| 101 | + StringArgumentType |
| 102 | + .getString( |
| 103 | + context, |
| 104 | + "fileName"), |
| 105 | + IntegerArgumentType |
| 106 | + .getInteger( |
| 107 | + context, |
| 108 | + "offsetY"), |
| 109 | + BoolArgumentType.getBool( |
| 110 | + context, |
| 111 | + "ignoreBarrier"), |
| 112 | + BoolArgumentType.getBool( |
| 113 | + context, |
| 114 | + "ignoreWater")))))))); |
80 | 115 |
|
81 | 116 | dispatcher.register( |
82 | 117 | literal("box3barrier") |
@@ -134,13 +169,16 @@ private static String resolveMapName(String fileName) { |
134 | 169 | } |
135 | 170 |
|
136 | 171 | private static int executeBox3Import(CommandSourceStack source, String fileName, |
137 | | - boolean ignoreBarrier, boolean useVanillaWater) { |
| 172 | + int offsetY, boolean ignoreBarrier, boolean useVanillaWater) { |
138 | 173 | ServerLevel level = source.getServer().overworld(); |
139 | 174 | try { |
140 | 175 | ServerPlayer player = source.getPlayer(); |
141 | 176 | String mapName = resolveMapName(fileName); |
| 177 | + var basePos = player != null ? player.position() : new BlockPos(0, 0, 0).getCenter(); |
| 178 | + var offsetPos = basePos.add(0, offsetY, 0); |
| 179 | + |
142 | 180 | VoxelImport.apply(null, level, mapName, |
143 | | - player != null ? player.position() : new BlockPos(0, 0, 0).getCenter(), |
| 181 | + offsetPos, |
144 | 182 | player, |
145 | 183 | ignoreBarrier, |
146 | 184 | useVanillaWater); |
|
0 commit comments