Hi, intro: many kids like MineCraft :) probably you know/heared of MineCraft Pi https://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/ But there seems to be Py for real MC http://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/ http://www.instructables.com/id/Python-coding-for-Minecraft/ PS.: a nice article (from js4MC world) https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGu... -- Jurgis Pralgauskis tel: 8-616 77613; Don't worry, be happy and make things better ;) http://galvosukykla.lt
Jurgis Pralgauskis wrote:
Hi, intro: many kids like MineCraft :) probably you know/heared of MineCraft Pi https://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/ But there seems to be Py for real MC http://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/ http://www.instructables.com/id/Python-coding-for-Minecraft/ PS.: a nice article (from js4MC world) https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGu... add up one more thing . you can now generate minecraft circle ,minecraft title, minecraft command and many more things with just simple tool that are available online https://minecraftcirclegenerator.info/
SensorCraft, https://news.ycombinator.com/item?id=26428340
I just found this: https://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/
This documentation supports the CoderDojo Twin Cities’ Build worlds in Minecraft with Python code group. This group intends to teach you how to use Python, a general purpose programming language, to mod the popular game called Minecraft. It is targeted at students aged 10 to 17 who have some programming experience in another language. For example, in Scratch
[...] So I just searched for "site: readthedocs.io kids python" https://www.google.com/search?q=site%3Areadthedocs.io+kids+python and found a few new and old things:
SensorCraft (pyglet (Python + OpenGL)) from US AFRL Sensors Directorate has e.g. Gravity, Rocket Launch, and AI tutorials:
Most people are familiar with Minecraft [...] for this project we are using a Minecraft type environment created in the Python programming language. The Air Force Research Laboratory (AFRL) Sensors Directorate located in Dayton, Ohio created this guide to inspire kids of all ages to learn to program and at the same time get an idea of what it is like to be a Scientist or Engineer for the Air Force. We created this YouTube video about SensorCraft
`conda install -c conda-forge -y pyglet` should probably work. Miniforge on Win/Mac/Lin is an easy way to get Python installed on anything including ARM64 for a RPi or similar; `conda create -n scraft; conda install -c conda-forge -y python=3.8 jupyterlab jupytext jupyter-book pyglet` . If you're in a conda env, `pip install` should install things within that conda env. Here's the meta.yaml in the conda-forge pyglet-feedstock: https://github.com/conda-forge/pyglet-feedstock/blob/master/recipe/meta.yaml
On Wed, Oct 6, 2021, 10:09 <cARLMASK063@gmail.com> wrote:
Jurgis Pralgauskis wrote:
Hi, intro: many kids like MineCraft :) probably you know/heared of MineCraft Pi https://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/ But there seems to be Py for real MC http://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/ http://www.instructables.com/id/Python-coding-for-Minecraft/ PS.: a nice article (from js4MC world)
https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGu. .. add up one more thing . you can now generate minecraft circle ,minecraft title, minecraft command and many more things with just simple tool that are available online https://minecraftcirclegenerator.info/ _______________________________________________ Edu-sig mailing list -- edu-sig@python.org To unsubscribe send an email to edu-sig-leave@python.org https://mail.python.org/mailman3/lists/edu-sig.python.org/ Member address: wes.turner@gmail.com
On Wed, Oct 6, 2021, 20:17 Wes Turner <wes.turner@gmail.com> wrote:
SensorCraft,
https://github.com/AFRL-RY/SensorCraft - [ ] ENH: Convert to Jupyter-Book w/ Notebooks and an environment.yml for (local) repo2docker
https://news.ycombinator.com/item?id=26428340
I just found this: https://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/
This documentation supports the CoderDojo Twin Cities’ Build worlds in Minecraft with Python code group. This group intends to teach you how to use Python, a general purpose programming language, to mod the popular game called Minecraft. It is targeted at students aged 10 to 17 who have some programming experience in another language. For example, in Scratch
[...] So I just searched for "site: readthedocs.io kids python" https://www.google.com/search?q=site%3Areadthedocs.io+kids+python and found a few new and old things:
SensorCraft (pyglet (Python + OpenGL)) from US AFRL Sensors Directorate has e.g. Gravity, Rocket Launch, and AI tutorials:
Most people are familiar with Minecraft [...] for this project we are using a Minecraft type environment created in the Python programming language. The Air Force Research Laboratory (AFRL) Sensors Directorate located in Dayton, Ohio created this guide to inspire kids of all ages to learn to program and at the same time get an idea of what it is like to be a Scientist or Engineer for the Air Force. We created this YouTube video about SensorCraft
`conda install -c conda-forge -y pyglet` should probably work. Miniforge on Win/Mac/Lin is an easy way to get Python installed on anything including ARM64 for a RPi or similar; `conda create -n scraft; conda install -c conda-forge -y python=3.8 jupyterlab jupytext jupyter-book pyglet` . If you're in a conda env, `pip install` should install things within that conda env. Here's the meta.yaml in the conda-forge pyglet-feedstock: https://github.com/conda-forge/pyglet-feedstock/blob/master/recipe/meta.yaml
On Wed, Oct 6, 2021, 10:09 <cARLMASK063@gmail.com> wrote:
Jurgis Pralgauskis wrote:
Hi, intro: many kids like MineCraft :) probably you know/heared of MineCraft Pi https://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/ But there seems to be Py for real MC http://coderdojotc.readthedocs.io/projects/python-minecraft/en/latest/ http://www.instructables.com/id/Python-coding-for-Minecraft/ PS.: a nice article (from js4MC world)
https://github.com/walterhiggins/ScriptCraft/blob/master/docs/YoungPersonsGu. .. add up one more thing . you can now generate minecraft circle ,minecraft title, minecraft command and many more things with just simple tool that are available online https://minecraftcirclegenerator.info/ _______________________________________________ Edu-sig mailing list -- edu-sig@python.org To unsubscribe send an email to edu-sig-leave@python.org https://mail.python.org/mailman3/lists/edu-sig.python.org/ Member address: wes.turner@gmail.com
Python scripts can generate neat in-world things, and there are many examples on the web. With a few lines you can draw a giant glass sphere, and with a bit more work make a giant Sierpinski triangle in the sky and even import obj files like a space shuttle. I myself made fun scripts to draw a water-filled glass donut and a gigantic Klein bottle, to turn everything around into TNT and to control Minecraft with your brain using a MindFlex EEG toy. There is a whole book introducing programming using python scripts for Minecraft, and you can even make simple Minecraft-based games. I will also show how to do simple (and sometimes more elaborate) turtle-based drawings in Minecraft, while you can ride along with the drawing as the turtle. For a while now you could write python scripts for Minecraft on the Raspberry Pi. I wanted my kids to be able to do that, but we don't have a Pi, plus it would be nice to do this with the full desktop Minecraft. You could run your own server with the Raspberry Juice plugin which enables most of the python scripts to work. But not everyone wants to install and configure a server. So I wrote the Raspberry Jam Mod for Minecraft 1.8 (now ported to 1.8.8, 1.8.9 and 1.9 as well) that emulates most of the Raspberry Pi Minecraft protocol (about the same as the Raspberry Juice plugin provides) and lets Raspberry Pi python scripts run with full desktop Minecraft. (I later found out that someone wrote the mcpiapi mod for Minecraft 1.7.10 a couple of weeks earlier.) I wrote this Instructable initially for Python 2.7, but I think most of my samples will work for 3.x. I assume that you have basic facility with creating folders and downloading, unzipping, and copying files on Windows (or your operating system of choice). You can create Python scripts for Minecraft with a text editor, the IDLE environment which comes with Python, or with Visual Studio Python Tools on Windows. The last is actually the nicest in some ways, so I'll have some optional steps on how to do that. This summer I plan to teach coding and basic 3D geometry to gifted middle- and high-schoolers using Minecraft, Raspberry Jam Mod, Python and Visual Studio. If you want to do this with Minecraft Pocket Edition on Android instead, I have an Instructable for that, too. Step 1. Modules and libraries for Make Minecraft in Python To make this Minecraft game in Python, we will utilize the ursina Python module. It is a Python cross-platform game creation package similar to PyGame. To install this library, start a terminal or command prompt in the project folder and paste the following command. pip install ursina Step 2. importing library Import the Ursina Engine and all the Textures that we will require in the future. from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() grass_texture = load_texture('assets/grass_block.png') stone_texture = load_texture('assets/stone_block.png') brick_texture = load_texture('assets/brick_block.png') dirt_texture = load_texture('assets/dirt_block.png') sky_texture = load_texture('assets/skybox.png') arm_texture = load_texture('assets/arm_texture.png') punch_sound = Audio('assets/punch_sound',loop = False, autoplay = False) block_pick = 1 To load the textures and block you need to download the Assets folder and paste it where your Minecraft code Python file is stored. Now there are a few things we need to do to make this all work, and let’s start by making actual cubes that we can utilize. This will be the most significant modification that we can do. It would appear appropriate if we applied a more appropriate texture to it. To do that we created a couple of textures. Step 3. Making Voxel(Cubes) for Minecraft in Python class Voxel(Button): def __init__(self, position = (0,0,0), texture = grass_texture): super().__init__( parent = scene, position = position, model = 'assets/block', origin_y = 0.5, texture = texture, color = color.color(0,0,random.uniform(0.9,1)), scale = 0.5) The third step is to build a new class for each voxel that we want to construct, therefore the class name will be voxel. And it derives from the button class. The basic explanation is that anytime I click on a voxel, I want to make another voxel just adjacent to it. So I need to know where each voxel is in relation to which button. And in here, we need our init method again and nothing else for the time being, and we also need the super method with an underscore to init. And now we must supply a few parameters, the first of which is parent, as shown above. The next stage would be to find a position, and the current status is (0,0). Next, I’d want to make a model of what the object would look like. And for the time being, this one will be a cube (parameters), but we may use different forms. The next step is to pass origin_y so that the height and 3D space of this cube are effectively (0.5), and the final and most crucial item is texture and color. And both of these things multiplied. Step 4. Making Minecraft Arena for z in range(20): for x in range(20): voxel = Voxel(position = (x,0,z)) Now that we have everything, we need to create a button for it. The cube’s current positions are x, y, and z. (0,0,0). To create individual voxels, we must first create a for loop in which the voxel is set. And if you need to make it bigger, increase 35 by 35. One of the current issues with this game is that if you add too many of these fields, the game may slow down. As a result, there would be a significant amount of optimization work to be done. Step 5. Creating First person Controller(FPC) from ursina.prefabs.first_person_controller import FirstPersonController player = FirstPersonController() The question is how we can develop a first-person character in all of this. and ursina makes this super simple. Because it comes with a number of preset classes that we may utilize to construct a first-person character. We don’t really have to do anything about it. And really, all we have to do is import something else first, which is from ursina. prefabs.first_person_ controller. This is not by default imported into Oceana, so we have to do it ourselves, but once we do it, all we have to do to create FPC (First Person Character) is to create a new variable where we store and then call FPC. Step 6. Making Interactive UI for Minecraft Python Edition def input(self,key): if self.hovered: if key == 'left mouse down': punch_sound.play() if block_pick == 1: voxel = Voxel(position = self.position + mouse.normal, texture = grass_texture) if block_pick == 2: voxel = Voxel(position = self.position + mouse.normal, texture = stone_texture) if block_pick == 3: voxel = Voxel(position = self.position + mouse.normal, texture = brick_texture) if block_pick == 4: voxel = Voxel(position = self.position + mouse.normal, texture = dirt_texture) if key == 'right mouse down': punch_sound.play() destroy(self) What we need to find out now is how to make this all more interactive. We must also create and destroy blocks, which will be really simple. Because what we want to accomplish is, when you push the voxel button, we want to construct a new block at that location. We develop an input function to do this. Make some transmissions as well. And then make a to change voxel for voxel texture Step 7. Changing Different Textures for Coding Minecraft in Python def update(): global block_pick if held_keys['left mouse'] or held_keys['right mouse']: hand.active() else: hand.passive() if held_keys['1']: block_pick = 1 if held_keys['2']: block_pick = 2 if held_keys['3']: block_pick = 3 if held_keys['4']: block_pick = 4 To make Minecraft with python, we need to change the cube texture, and for changing the cube texture here we created a loop by clicking one to four keys to alter the voxel texture by Left click and destroying it with the right key. In simple words. If we press any of these buttons this block pick gets a different number. Step 8. Creating the Sky class Sky(Entity): def __init__(self): super().__init__( parent = scene, model = 'sphere', texture = sky_texture, scale = 150, double_sided = True) There are three other components that can significantly help to convey the game. The first is a Sky Box, the second is a Hand, and the third is noises. And let us take them one step at a time in Minecraft coding Python. The first is a skybox, which we emulated in our game by creating a huge sphere with a sky texture. To do this, we will construct a new class named Sky. Step 9. Make an FPC Hand class Hand(Entity): def __init__(self): super().__init__( parent = camera.ui, # This 3D space for Our UI and 2D space for our camera model = 'assets/arm', texture = arm_texture, scale = 0.2, rotation = Vec3(150,-10,0), #vec3 is represent 3D space and the parameters are for position(x,y,z) position = Vec2(0.4,-0.6)) #vec2 is represent 2D space and the parameters are for position(x,y,z) def active(self): self.position = Vec2(0.3,-0.5) def passive(self): self.position = Vec2(0.4,-0.6) Now the next thing we will going to need is a hand and this one is purely decorative. Basically I have used some types of variables while working on https://enterprise.affle.com/mobile-app-development . It does not do anything besides simulating having a hand it’s a straightforward thing by creating a class called hand, this one is also going to be an entity. Complete code of Minecraft in Python - from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() grass_texture = load_texture('assets/grass_block.png') stone_texture = load_texture('assets/stone_block.png') brick_texture = load_texture('assets/brick_block.png') dirt_texture = load_texture('assets/dirt_block.png') sky_texture = load_texture('assets/skybox.png') arm_texture = load_texture('assets/arm_texture.png') punch_sound = Audio('assets/punch_sound',loop = False, autoplay = False) block_pick = 1 window.fps_counter.enabled = False #To Disable the FPS Counter window.exit_button.visible = False #To Remove the exit(close) Button def update(): global block_pick if held_keys['left mouse'] or held_keys['right mouse']: hand.active() else: hand.passive() if held_keys['1']: block_pick = 1 if held_keys['2']: block_pick = 2 if held_keys['3']: block_pick = 3 if held_keys['4']: block_pick = 4 class Voxel(Button): def __init__(self, position = (0,0,0), texture = grass_texture): super().__init__( parent = scene, position = position, model = 'assets/block', origin_y = 0.5, texture = texture, color = color.color(0,0,random.uniform(0.9,1)), scale = 0.5) def input(self,key): if self.hovered: if key == 'left mouse down': punch_sound.play() if block_pick == 1: voxel = Voxel(position = self.position + mouse.normal, texture = grass_texture) if block_pick == 2: voxel = Voxel(position = self.position + mouse.normal, texture = stone_texture) if block_pick == 3: voxel = Voxel(position = self.position + mouse.normal, texture = brick_texture) if block_pick == 4: voxel = Voxel(position = self.position + mouse.normal, texture = dirt_texture) if key == 'right mouse down': punch_sound.play() destroy(self) class Sky(Entity): def __init__(self): super().__init__( parent = scene, model = 'sphere', texture = sky_texture, scale = 150, double_sided = True) class Hand(Entity): def __init__(self): super().__init__( parent = camera.ui, model = 'assets/arm', texture = arm_texture, scale = 0.2, rotation = Vec3(150,-10,0), position = Vec2(0.4,-0.6)) def active(self): self.position = Vec2(0.3,-0.5) def passive(self): self.position = Vec2(0.4,-0.6) for z in range(20): for x in range(20): voxel = Voxel(position = (x,0,z)) player = FirstPersonController() sky = Sky() hand = Hand() app.run() Hope it will help everyone.
Thanks Owen! I combined it into a Gist to make it easier for people to use. https://gist.github.com/NeilShah2026/32d48b438407ba0eb5c6a56cbbc4ff65 On Fri, Dec 2, 2022 at 10:20 AM Cabal Owen <cabalowen@gmail.com> wrote:
Python scripts can generate neat in-world things, and there are many examples on the web. With a few lines you can draw a giant glass sphere, and with a bit more work make a giant Sierpinski triangle in the sky and even import obj files like a space shuttle. I myself made fun scripts to draw a water-filled glass donut and a gigantic Klein bottle, to turn everything around into TNT and to control Minecraft with your brain using a MindFlex EEG toy. There is a whole book introducing programming using python scripts for Minecraft, and you can even make simple Minecraft-based games. I will also show how to do simple (and sometimes more elaborate) turtle-based drawings in Minecraft, while you can ride along with the drawing as the turtle.
For a while now you could write python scripts for Minecraft on the Raspberry Pi. I wanted my kids to be able to do that, but we don't have a Pi, plus it would be nice to do this with the full desktop Minecraft. You could run your own server with the Raspberry Juice plugin which enables most of the python scripts to work. But not everyone wants to install and configure a server.
So I wrote the Raspberry Jam Mod for Minecraft 1.8 (now ported to 1.8.8, 1.8.9 and 1.9 as well) that emulates most of the Raspberry Pi Minecraft protocol (about the same as the Raspberry Juice plugin provides) and lets Raspberry Pi python scripts run with full desktop Minecraft. (I later found out that someone wrote the mcpiapi mod for Minecraft 1.7.10 a couple of weeks earlier.) I wrote this Instructable initially for Python 2.7, but I think most of my samples will work for 3.x.
I assume that you have basic facility with creating folders and downloading, unzipping, and copying files on Windows (or your operating system of choice).
You can create Python scripts for Minecraft with a text editor, the IDLE environment which comes with Python, or with Visual Studio Python Tools on Windows. The last is actually the nicest in some ways, so I'll have some optional steps on how to do that.
This summer I plan to teach coding and basic 3D geometry to gifted middle- and high-schoolers using Minecraft, Raspberry Jam Mod, Python and Visual Studio.
If you want to do this with Minecraft Pocket Edition on Android instead, I have an Instructable for that, too.
Step 1. Modules and libraries for Make Minecraft in Python To make this Minecraft game in Python, we will utilize the ursina Python module. It is a Python cross-platform game creation package similar to PyGame.
To install this library, start a terminal or command prompt in the project folder and paste the following command.
pip install ursina Step 2. importing library Import the Ursina Engine and all the Textures that we will require in the future.
from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() grass_texture = load_texture('assets/grass_block.png') stone_texture = load_texture('assets/stone_block.png') brick_texture = load_texture('assets/brick_block.png') dirt_texture = load_texture('assets/dirt_block.png') sky_texture = load_texture('assets/skybox.png') arm_texture = load_texture('assets/arm_texture.png') punch_sound = Audio('assets/punch_sound',loop = False, autoplay = False) block_pick = 1 To load the textures and block you need to download the Assets folder and paste it where your Minecraft code Python file is stored.
Now there are a few things we need to do to make this all work, and let’s start by making actual cubes that we can utilize. This will be the most significant modification that we can do. It would appear appropriate if we applied a more appropriate texture to it. To do that we created a couple of textures.
Step 3. Making Voxel(Cubes) for Minecraft in Python class Voxel(Button): def __init__(self, position = (0,0,0), texture = grass_texture): super().__init__( parent = scene, position = position, model = 'assets/block', origin_y = 0.5, texture = texture, color = color.color(0,0,random.uniform(0.9,1)), scale = 0.5) The third step is to build a new class for each voxel that we want to construct, therefore the class name will be voxel. And it derives from the button class. The basic explanation is that anytime I click on a voxel, I want to make another voxel just adjacent to it. So I need to know where each voxel is in relation to which button. And in here, we need our init method again and nothing else for the time being, and we also need the super method with an underscore to init. And now we must supply a few parameters, the first of which is parent, as shown above.
The next stage would be to find a position, and the current status is (0,0). Next, I’d want to make a model of what the object would look like. And for the time being, this one will be a cube (parameters), but we may use different forms. The next step is to pass origin_y so that the height and 3D space of this cube are effectively (0.5), and the final and most crucial item is texture and color. And both of these things multiplied.
Step 4. Making Minecraft Arena for z in range(20): for x in range(20): voxel = Voxel(position = (x,0,z)) Now that we have everything, we need to create a button for it. The cube’s current positions are x, y, and z. (0,0,0). To create individual voxels, we must first create a for loop in which the voxel is set. And if you need to make it bigger, increase 35 by 35. One of the current issues with this game is that if you add too many of these fields, the game may slow down. As a result, there would be a significant amount of optimization work to be done.
Step 5. Creating First person Controller(FPC) from ursina.prefabs.first_person_controller import FirstPersonController player = FirstPersonController() The question is how we can develop a first-person character in all of this. and ursina makes this super simple. Because it comes with a number of preset classes that we may utilize to construct a first-person character. We don’t really have to do anything about it. And really, all we have to do is import something else first, which is from ursina. prefabs.first_person_ controller. This is not by default imported into Oceana, so we have to do it ourselves, but once we do it, all we have to do to create FPC (First Person Character) is to create a new variable where we store and then call FPC.
Step 6. Making Interactive UI for Minecraft Python Edition def input(self,key): if self.hovered: if key == 'left mouse down': punch_sound.play() if block_pick == 1: voxel = Voxel(position = self.position + mouse.normal, texture = grass_texture) if block_pick == 2: voxel = Voxel(position = self.position + mouse.normal, texture = stone_texture) if block_pick == 3: voxel = Voxel(position = self.position + mouse.normal, texture = brick_texture) if block_pick == 4: voxel = Voxel(position = self.position + mouse.normal, texture = dirt_texture) if key == 'right mouse down': punch_sound.play() destroy(self) What we need to find out now is how to make this all more interactive. We must also create and destroy blocks, which will be really simple. Because what we want to accomplish is, when you push the voxel button, we want to construct a new block at that location. We develop an input function to do this. Make some transmissions as well. And then make a to change voxel for voxel texture
Step 7. Changing Different Textures for Coding Minecraft in Python def update(): global block_pick
if held_keys['left mouse'] or held_keys['right mouse']: hand.active() else: hand.passive()
if held_keys['1']: block_pick = 1 if held_keys['2']: block_pick = 2 if held_keys['3']: block_pick = 3 if held_keys['4']: block_pick = 4 To make Minecraft with python, we need to change the cube texture, and for changing the cube texture here we created a loop by clicking one to four keys to alter the voxel texture by Left click and destroying it with the right key. In simple words. If we press any of these buttons this block pick gets a different number.
Step 8. Creating the Sky class Sky(Entity): def __init__(self): super().__init__( parent = scene, model = 'sphere', texture = sky_texture, scale = 150, double_sided = True) There are three other components that can significantly help to convey the game. The first is a Sky Box, the second is a Hand, and the third is noises. And let us take them one step at a time in Minecraft coding Python. The first is a skybox, which we emulated in our game by creating a huge sphere with a sky texture. To do this, we will construct a new class named Sky.
Step 9. Make an FPC Hand class Hand(Entity): def __init__(self): super().__init__( parent = camera.ui, # This 3D space for Our UI and 2D space for our camera model = 'assets/arm', texture = arm_texture, scale = 0.2, rotation = Vec3(150,-10,0), #vec3 is represent 3D space and the parameters are for position(x,y,z) position = Vec2(0.4,-0.6)) #vec2 is represent 2D space and the parameters are for position(x,y,z)
def active(self): self.position = Vec2(0.3,-0.5)
def passive(self): self.position = Vec2(0.4,-0.6) Now the next thing we will going to need is a hand and this one is purely decorative. Basically I have used some types of variables while working on https://enterprise.affle.com/mobile-app-development . It does not do anything besides simulating having a hand it’s a straightforward thing by creating a class called hand, this one is also going to be an entity.
Complete code of Minecraft in Python - from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController
app = Ursina() grass_texture = load_texture('assets/grass_block.png') stone_texture = load_texture('assets/stone_block.png') brick_texture = load_texture('assets/brick_block.png') dirt_texture = load_texture('assets/dirt_block.png') sky_texture = load_texture('assets/skybox.png') arm_texture = load_texture('assets/arm_texture.png') punch_sound = Audio('assets/punch_sound',loop = False, autoplay = False) block_pick = 1
window.fps_counter.enabled = False #To Disable the FPS Counter window.exit_button.visible = False #To Remove the exit(close) Button
def update(): global block_pick
if held_keys['left mouse'] or held_keys['right mouse']: hand.active() else: hand.passive()
if held_keys['1']: block_pick = 1 if held_keys['2']: block_pick = 2 if held_keys['3']: block_pick = 3 if held_keys['4']: block_pick = 4
class Voxel(Button): def __init__(self, position = (0,0,0), texture = grass_texture): super().__init__( parent = scene, position = position, model = 'assets/block', origin_y = 0.5, texture = texture, color = color.color(0,0,random.uniform(0.9,1)), scale = 0.5)
def input(self,key): if self.hovered: if key == 'left mouse down': punch_sound.play() if block_pick == 1: voxel = Voxel(position = self.position + mouse.normal, texture = grass_texture) if block_pick == 2: voxel = Voxel(position = self.position + mouse.normal, texture = stone_texture) if block_pick == 3: voxel = Voxel(position = self.position + mouse.normal, texture = brick_texture) if block_pick == 4: voxel = Voxel(position = self.position + mouse.normal, texture = dirt_texture)
if key == 'right mouse down': punch_sound.play() destroy(self)
class Sky(Entity): def __init__(self): super().__init__( parent = scene, model = 'sphere', texture = sky_texture, scale = 150, double_sided = True)
class Hand(Entity): def __init__(self): super().__init__( parent = camera.ui, model = 'assets/arm', texture = arm_texture, scale = 0.2, rotation = Vec3(150,-10,0), position = Vec2(0.4,-0.6))
def active(self): self.position = Vec2(0.3,-0.5)
def passive(self): self.position = Vec2(0.4,-0.6)
for z in range(20): for x in range(20): voxel = Voxel(position = (x,0,z))
player = FirstPersonController() sky = Sky() hand = Hand()
app.run()
Hope it will help everyone. _______________________________________________ Edu-sig mailing list -- edu-sig@python.org To unsubscribe send an email to edu-sig-leave@python.org https://mail.python.org/mailman3/lists/edu-sig.python.org/ Member address: neildshah1013@gmail.com
Dňa 2.12.2022 16:27 Neil Shah napísal(a):
Thanks Owen!
I combined it into a Gist to make it easier for people to use. https://gist.github.com/NeilShah2026/32d48b438407ba0eb5c6a56cbbc4ff65
No need for this. Search on github: https://github.com/search?q=ursina+minecraft and you will get 165 repository results, mostly with the same code... :)
účastníci (6)
-
Cabal Owen
-
cARLMASK063@GMAIL.COM
-
Jurgis Pralgauskis
-
Michal Kaukic
-
Neil Shah
-
Wes Turner