Skip to content

Commit e5df290

Browse files
committed
add right and left click event handlers
add adjacent + selected target getters
1 parent d269d23 commit e5df290

File tree

4 files changed

+178
-0
lines changed

4 files changed

+178
-0
lines changed

blockly/src/minecraft/api.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,23 @@ exports.setBlock = function(value, x, y, z, id) {
2424
BlocklyApps.highlight(id);
2525
window.game.setBlock([x,y,z], value);
2626
};
27+
28+
exports.getAdjacentTargetX = function() {
29+
return window.game.plugins.get('voxel-reach').currentTarget.adjacent[0];
30+
};
31+
exports.getAdjacentTargetY = function() {
32+
return window.game.plugins.get('voxel-reach').currentTarget.adjacent[1];
33+
};
34+
exports.getAdjacentTargetZ = function() {
35+
return window.game.plugins.get('voxel-reach').currentTarget.adjacent[2];
36+
};
37+
38+
exports.getSelectedTargetX = function() {
39+
return window.game.plugins.get('voxel-reach').currentTarget.voxel[0];
40+
};
41+
exports.getSelectedTargetY = function() {
42+
return window.game.plugins.get('voxel-reach').currentTarget.voxel[1];
43+
};
44+
exports.getSelectedTargetZ = function() {
45+
return window.game.plugins.get('voxel-reach').currentTarget.voxel[2];
46+
};

blockly/src/minecraft/blocks.js

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,137 @@ exports.install = function(blockly, blockInstallOptions) {
191191
//this.setInputsInline(true);
192192
}
193193
};
194+
195+
blockly.Blocks.minecraft_whenRightClick = {
196+
// Block to handle event where mouse is clicked
197+
helpUrl: '',
198+
init: function () {
199+
this.setHSV(140, 1.00, 0.74);
200+
this.appendDummyInput().appendTitle('when rightclick');
201+
this.setPreviousStatement(false);
202+
this.setNextStatement(true);
203+
this.setTooltip('when rightclick');
204+
}
205+
};
206+
207+
blockly.Blocks.minecraft_whenLeftClick = {
208+
// Block to handle event where mouse is clicked
209+
helpUrl: '',
210+
init: function () {
211+
this.setHSV(140, 1.00, 0.74);
212+
this.appendDummyInput().appendTitle('when leftclick');
213+
this.setPreviousStatement(false);
214+
this.setNextStatement(true);
215+
this.setTooltip('when leftclick');
216+
}
217+
};
218+
219+
generator.minecraft_whenRightClick = function () {
220+
// Generate JavaScript for handling click event.
221+
return '\n';
222+
};
223+
generator.minecraft_whenLeftClick = function () {
224+
// Generate JavaScript for handling click event.
225+
return '\n';
226+
};
227+
228+
blockly.Blocks.minecraft_adjacent_target_x = {
229+
// adjacent target x.
230+
init: function () {
231+
this.setHSV(258, 0.35, 0.62);
232+
this.setOutput(true, 'Number');
233+
this.appendDummyInput()
234+
.appendTitle('adjacent x');
235+
this.setTooltip('adjacent x');
236+
}
237+
};
238+
239+
generator.minecraft_adjacent_target_x = function () {
240+
// Generate JavaScript for handling click event.
241+
242+
return ['Minecraft.getAdjacentTargetX()\n', Blockly.JavaScript.ORDER_ATOMIC];
243+
};
244+
245+
blockly.Blocks.minecraft_adjacent_target_y = {
246+
// adjacent target y.
247+
init: function () {
248+
this.setHSV(258, 0.35, 0.62);
249+
this.setOutput(true, 'Number');
250+
this.appendDummyInput()
251+
.appendTitle('adjacent y');
252+
this.setTooltip('adjacent y');
253+
}
254+
};
255+
256+
generator.minecraft_adjacent_target_y = function () {
257+
// Generate JavaScript for handling click event.
258+
return ['Minecraft.getAdjacentTargetY()\n', Blockly.JavaScript.ORDER_ATOMIC];
259+
};
260+
261+
blockly.Blocks.minecraft_adjacent_target_z = {
262+
// adjacent target z.
263+
init: function () {
264+
this.setHSV(258, 0.35, 0.62);
265+
this.setOutput(true, 'Number');
266+
this.appendDummyInput()
267+
.appendTitle('adjacent z');
268+
this.setTooltip('adjacent z');
269+
}
270+
};
271+
272+
generator.minecraft_adjacent_target_z = function () {
273+
// Generate JavaScript for handling click event.
274+
return ['Minecraft.getAdjacentTargetZ()\n', Blockly.JavaScript.ORDER_ATOMIC];
275+
};
276+
277+
278+
blockly.Blocks.minecraft_selected_target_x = {
279+
// selected target x.
280+
init: function () {
281+
this.setHSV(258, 0.35, 0.62);
282+
this.setOutput(true, 'Number');
283+
this.appendDummyInput()
284+
.appendTitle('selected x');
285+
this.setTooltip('selected x');
286+
}
287+
};
288+
289+
generator.minecraft_selected_target_x = function () {
290+
// Generate JavaScript for handling click event.
291+
292+
return ['Minecraft.getSelectedTargetX()\n', Blockly.JavaScript.ORDER_ATOMIC];
293+
};
294+
295+
blockly.Blocks.minecraft_selected_target_y = {
296+
// selected target y.
297+
init: function () {
298+
this.setHSV(258, 0.35, 0.62);
299+
this.setOutput(true, 'Number');
300+
this.appendDummyInput()
301+
.appendTitle('selected y');
302+
this.setTooltip('selected y');
303+
}
304+
};
305+
306+
generator.minecraft_selected_target_y = function () {
307+
// Generate JavaScript for handling click event.
308+
return ['Minecraft.getSelectedTargetY()\n', Blockly.JavaScript.ORDER_ATOMIC];
309+
};
310+
311+
blockly.Blocks.minecraft_selected_target_z = {
312+
// selected target z.
313+
init: function () {
314+
this.setHSV(258, 0.35, 0.62);
315+
this.setOutput(true, 'Number');
316+
this.appendDummyInput()
317+
.appendTitle('selected z');
318+
this.setTooltip('selected z');
319+
}
320+
};
321+
322+
generator.minecraft_selected_target_z = function () {
323+
// Generate JavaScript for handling click event.
324+
return ['Minecraft.getSelectedTargetZ()\n', Blockly.JavaScript.ORDER_ATOMIC];
325+
};
326+
194327
};

blockly/src/minecraft/levels.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ module.exports = {
1414
blockUtils.blockOfType('minecraft_setGravity') +
1515
blockUtils.blockOfType('minecraft_setSpeed') +
1616
blockUtils.blockOfType('minecraft_setBlock') +
17+
blockUtils.blockOfType('minecraft_whenRightClick') +
18+
blockUtils.blockOfType('minecraft_adjacent_target_x') +
19+
blockUtils.blockOfType('minecraft_adjacent_target_y') +
20+
blockUtils.blockOfType('minecraft_adjacent_target_z') +
21+
blockUtils.blockOfType('minecraft_whenLeftClick') +
22+
blockUtils.blockOfType('minecraft_selected_target_x') +
23+
blockUtils.blockOfType('minecraft_selected_target_y') +
24+
blockUtils.blockOfType('minecraft_selected_target_z') +
1725
'<block type="controls_repeat"><title name="TIMES">4</title></block><block type="controls_repeat_dropdown"><title name="TIMES" config="3-10">???</title></block><block type="controls_repeat_ext"><value name="TIMES"></value><statement name="DO"></statement></block>' +
1826
'<block type="math_number"></block><block type="math_number_dropdown"><title name="NUM" config="1-10">5</title></block><block type="math_arithmetic" inline="true"></block><block type="math_random_int"><value name="FROM"><block type="math_number"><title name="NUM">1</title></block></value><value name="TO"><block type="math_number"><title name="NUM">100</title></block></value></block><block type="math_random_float"></block>' +
1927
'<block type="variables_set" inline="false"><title name="VAR">x</title><value name="VALUE"><block type="math_number"><title name="NUM">???</title></block></value></block><block type="variables_get"><title name="VAR">x</title></block>'

blockly/src/minecraft/minecraft.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,28 @@ Minecraft.init = function(config) {
9797
// base's BlocklyApps.resetButtonClick will be called first
9898
var resetButton = document.getElementById('resetButton');
9999
dom.addClickTouchEvent(resetButton, Minecraft.resetButtonClick);
100+
101+
window.game.plugins.get('voxel-reach').on('use', function(target) { Minecraft.handleWhenRightClick(target);});
102+
//window.game.plugins.get('voxel-reach').on('start mining', function(target) { Minecraft.handleWhenLeftClick(target);});
103+
window.game.on('fire', function() { Minecraft.handleWhenLeftClick();});
104+
100105
};
101106

102107
BlocklyApps.init(config);
103108
};
104109

110+
Minecraft.handleWhenRightClick = function(target) {
111+
evalCode(Blockly.Generator.blockSpaceToCode(
112+
'JavaScript',
113+
'minecraft_whenRightClick'));
114+
};
115+
116+
Minecraft.handleWhenLeftClick = function(target) {
117+
evalCode(Blockly.Generator.blockSpaceToCode(
118+
'JavaScript',
119+
'minecraft_whenLeftClick'));
120+
};
121+
105122
/**
106123
* Click the run button. Start the program.
107124
*/

0 commit comments

Comments
 (0)