From 180aad05decc7eefa87e4e45d6747c48f40e5361 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 17 Apr 2023 12:12:01 -0400 Subject: save --- .../tylermurphy/Minecraft/Tick/BlockUpdate.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 src/main/java/net/tylermurphy/Minecraft/Tick/BlockUpdate.java (limited to 'src/main/java/net/tylermurphy/Minecraft/Tick/BlockUpdate.java') diff --git a/src/main/java/net/tylermurphy/Minecraft/Tick/BlockUpdate.java b/src/main/java/net/tylermurphy/Minecraft/Tick/BlockUpdate.java new file mode 100755 index 0000000..6c5fef1 --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Tick/BlockUpdate.java @@ -0,0 +1,53 @@ +package net.tylermurphy.Minecraft.Tick; + +import java.util.ArrayList; +import java.util.List; + +import net.tylermurphy.Minecraft.Chunk.Cube; +import net.tylermurphy.Minecraft.Scene.World; + +public class BlockUpdate { + + public int x,y,z; + public byte old_block_id; + public byte new_block_id; + private long delay_of_update, creation_of_update; + + private static List current_block_updates = new ArrayList(); + private static List waiting_block_updates = new ArrayList(); + + public static void createBlockUpdate(int x, int y, int z, byte old_block_id, byte new_block_id) { + BlockUpdate update = new BlockUpdate(); + update.x = x; + update.y = y; + update.z = z; + update.old_block_id = old_block_id; + update.new_block_id = new_block_id; + if(new_block_id != -1) + update.delay_of_update = Cube.getBlock(new_block_id).tick_update_delay*1000000; + else + update.delay_of_update = Cube.getBlock("water").tick_update_delay*1000000; + update.creation_of_update = System.nanoTime(); + waiting_block_updates.add(update); + } + + public static List loadBirthedUpdates() { + int j = waiting_block_updates.size(); + for(int i = 0; i < j; i++) { + BlockUpdate update = waiting_block_updates.get(i); + if(World.getBlock(update.x, update.y, update.z) != update.new_block_id) continue; + if(System.nanoTime() - update.creation_of_update >= update.delay_of_update) { + waiting_block_updates.remove(i); + j--; + i--; + current_block_updates.add(update); + } + } + return current_block_updates; + } + + public static void purgeUpdates() { + current_block_updates.clear(); + } + +} -- cgit v1.2.3-freya