diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-17 12:12:01 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-04-17 12:12:01 -0400 |
commit | 180aad05decc7eefa87e4e45d6747c48f40e5361 (patch) | |
tree | 51545197f7c94b4022acab880772c9f4fc65db0e /src/main/java/net/tylermurphy/Minecraft/Scripts | |
download | minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.gz minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.bz2 minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.zip |
Diffstat (limited to 'src/main/java/net/tylermurphy/Minecraft/Scripts')
4 files changed, 216 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java new file mode 100755 index 0000000..f73ef9d --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/GameScript.java @@ -0,0 +1,99 @@ +package net.tylermurphy.Minecraft.Scripts;
+
+import java.util.Random;
+
+import net.tylermurphy.Minecraft.Audio.Sound;
+import net.tylermurphy.Minecraft.Audio.SoundManager;
+import net.tylermurphy.Minecraft.Chunk.Chunk;
+import net.tylermurphy.Minecraft.Scene.Camera;
+import net.tylermurphy.Minecraft.Scene.Objects.Transform;
+import net.tylermurphy.Minecraft.Scene.Objects.WorldOrigin;
+import net.tylermurphy.Minecraft.Scene.Player;
+import net.tylermurphy.Minecraft.Scene.World;
+import net.tylermurphy.Minecraft.Tick.TickManager;
+import net.tylermurphy.Minecraft.Util.ChunkLoader;
+import net.tylermurphy.Minecraft.Util.Constants;
+import net.tylermurphy.Minecraft.Util.Data;
+import net.tylermurphy.Minecraft.Util.ResourceManager;
+import org.joml.Vector3f;
+
+public class GameScript extends Script {
+
+ Sound sound;
+ String[] music = {"calm1","calm2","calm3","hal1","hal2","hal3","hal4","nuance1","nuance2","piano1","piano2","piano3"};
+
+ public void Init() {
+ createScene();
+ loadNextSound();
+ }
+
+ public void Update() {
+ ChunkLoader.run();
+ }
+
+ public void Tick() {
+ if(!sound.isPlaying()) loadNextSound();
+ for(Chunk c: World.getChunks()) {
+ if(c==null) continue;
+ if(c.isScheduled())
+ c.updateMesh();
+ }
+ TickManager.doTick();
+ }
+
+ public void loadNextSound() {
+ Random random = new Random();
+ int i = random.nextInt(music.length);
+ sound = SoundManager.loadSound(music[i]);
+ sound.setLooping(false);
+ sound.play();
+ }
+
+ public void Stop() {
+ sound.stop();
+
+ ChunkLoader.save();
+
+ ResourceManager.saveObject("playerdata/", "temp.player", World.player);
+ ResourceManager.saveObject("playerdata/", "temp.camera", World.camera);
+ Data worldData = new Data();
+ worldData.INTS.put("SEED", World.seed);
+ worldData.INTS.put("OriginX", World.world_origin.x());
+ worldData.INTS.put("OriginZ", World.world_origin.z());
+ ResourceManager.saveObject("", "world.dat", worldData);
+ }
+
+ private static void createScene() {
+
+ Camera camera = (Camera) ResourceManager.loadObject("playerdata/", "temp.camera");
+ if(camera!=null) {
+ World.camera = camera;
+ } else{
+ World.camera = new Camera();
+ }
+
+ Data worldData = (Data) ResourceManager.loadObject("", "world.dat");
+ if(worldData == null) {
+ World.seed = new Random().nextInt(1000000000);
+ World.world_origin = new WorldOrigin(0,0);
+ } else {
+ World.seed = worldData.INTS.get("SEED");
+ int wx = worldData.INTS.get("OriginX");
+ int wz = worldData.INTS.get("OriginZ");
+ World.world_origin = new WorldOrigin(wx,wz);
+ }
+ World.renderDistance = Constants.RENDER_DISTANCE;
+ Player player = (Player) ResourceManager.loadObject("playerdata/", "temp.player");
+ if(player!=null) {
+ World.player = player;
+ } else{
+ World.player = new Player(
+ new Transform()
+ .setPosition(new Vector3f(0, 160, 0))
+ .setScale(.6f)
+ );
+ }
+
+ }
+
+}
\ No newline at end of file diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java new file mode 100755 index 0000000..eb64b14 --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/PlayerScript.java @@ -0,0 +1,44 @@ +package net.tylermurphy.Minecraft.Scripts;
+
+import static net.tylermurphy.Minecraft.UI.UIMaster.bindUI;
+import static net.tylermurphy.Minecraft.UI.UIMaster.getImage;
+import static net.tylermurphy.Minecraft.UI.UIMaster.getText;
+import static net.tylermurphy.Minecraft.UI.UIMaster.setEnabled;
+
+import net.tylermurphy.Minecraft.Main;
+import net.tylermurphy.Minecraft.Scene.World;
+
+public class PlayerScript extends Script {
+
+ int last_height = 0;
+
+ public void Update() {
+ World.player.isFalling = World.player.isInAir && !World.player.isFlying && !World.player.isSwimming;
+ if(World.player.isSwimming || World.player.isFlying) last_height = (int) World.player.getTransform().getGlobalPosition().y;
+
+ if(World.player.isFalling) {
+ if(!World.player.wasFalling)
+ last_height = (int) World.player.getTransform().getGlobalPosition().y;
+ World.player.wasFalling = true;
+ } else if(World.player.wasFalling) {
+ int current_height = (int) World.player.getTransform().getGlobalPosition().y;
+ float height_fell = last_height - current_height;
+ if(height_fell > 3)
+ World.player.health -= height_fell - 3;
+ World.player.health = Math.max(World.player.health,0);
+ World.player.wasFalling = false;
+ }
+
+ if(World.player.health <= 0) {
+ World.player.isDead = true;
+ bindUI(1);
+ setEnabled(false);
+ bindUI(0);
+ getText("dead").setEnabled(true);
+ getImage("crosshair").setEnabled(false);
+ }
+ World.world_origin.recalculateOrigin();
+ if(!World.player.isDead && Main.getTicks() % 80 == 0 && World.player.health < 20) World.player.health++;
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java new file mode 100755 index 0000000..0ff5c8d --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/Script.java @@ -0,0 +1,11 @@ +package net.tylermurphy.Minecraft.Scripts;
+
+public class Script {
+
+ public void Init() {}
+ public void Update() {}
+ public void Tick() {}
+ public void End() {}
+ public void Stop() {}
+
+}
diff --git a/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java b/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java new file mode 100755 index 0000000..2f7da5f --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Scripts/UIScript.java @@ -0,0 +1,62 @@ +package net.tylermurphy.Minecraft.Scripts;
+
+import static net.tylermurphy.Minecraft.UI.UIMaster.bindUI;
+import static net.tylermurphy.Minecraft.UI.UIMaster.getImage;
+import static net.tylermurphy.Minecraft.UI.UIMaster.getText;
+import static net.tylermurphy.Minecraft.UI.UIMaster.setEnabled;
+
+import net.tylermurphy.Minecraft.Main;
+import net.tylermurphy.Minecraft.Scene.World;
+import net.tylermurphy.Minecraft.UI.UIImage;
+import net.tylermurphy.Minecraft.UI.UIFactory.*;
+import net.tylermurphy.Minecraft.Render.Data.Display;
+
+public class UIScript extends Script {
+
+ public void Init() {
+ UIStore.InitalizeStoreData();
+ CoreUI.initCoreUI();
+ F3UI.initF3UI();
+ SavingUI.initSavingUI();
+ CommandUI.initCommandUI();
+ }
+
+ public void Update() {
+ bindUI(0);
+ for(int i=1;i<=10;i++) {
+ UIImage heart = getImage("heart" + i);
+ if(World.player.health >= i*2) {
+ heart.setTexture(UIStore.TEXTURES.get("heart_full_texture"));
+ } else if(World.player.health >= i*2-1) {
+ heart.setTexture(UIStore.TEXTURES.get("heart_half_texture"));
+ } else {
+ heart.setTexture(UIStore.TEXTURES.get("heart_empty_texture"));
+ }
+ }
+ }
+
+ public void Tick() {
+ String position = "Position: "+(int)(World.player.getTransform().getGlobalPosition().x())+","+(int) World.player.getTransform().getGlobalPosition().y()+","+(int)(World.player.getTransform().getGlobalPosition().z());
+ String rotation = "Rotation: "+(int) World.player.getTransform().getRotation().x+","+(int) World.player.getTransform().getRotation().y+","+(int) World.player.getTransform().getRotation().z;
+ bindUI(1);
+ getText("position").setText(position);
+ getText("rotation").setText(rotation);
+ getText("freemem").setText("Free memory (bytes): " + Runtime.getRuntime().freeMemory());
+ if(Main.getTicks() % 20 == 0) {
+ getText("fps").setText("FPS: " + (int)(1/Display.getFrameTimeSeconds()));
+ getText("tps").setText("TPS: " + Main.getTPS());
+ }
+ }
+
+ public void End() {
+ bindUI(0);
+ setEnabled(false);
+ bindUI(1);
+ setEnabled(false);
+ bindUI(2);
+ setEnabled(true);
+ bindUI(3);
+ setEnabled(false);
+ }
+
+}
|