From 7f2411c216fcbc5cc6d5b5d6d62cb520c2ef2dd4 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 18 Mar 2024 23:44:17 +1100 Subject: [PATCH] Add how2hadron presentation scenes 1-3 --- .../tileentity/machine/TileEntityHadron.java | 6 +- .../com/hbm/wiaj/cannery/CanneryHadron.java | 201 ++++++++++++++++++ src/main/java/com/hbm/wiaj/cannery/Jars.java | 3 +- src/main/resources/assets/hbm/lang/en_US.lang | 10 + 4 files changed, 216 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/wiaj/cannery/CanneryHadron.java diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 213fc6d59..a0c634cd9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -364,9 +364,9 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs //If any particles expire, cancel any succeeding particles, since they'll confuse the player particlesCompleted.clear(); - TileEntityHadron.this.state = reason; - TileEntityHadron.this.delay = delayError; - TileEntityHadron.this.setExpireStats(reason, particle.momentum, particle.posX, particle.posY, particle.posZ); + state = reason; + delay = delayError; + setExpireStats(reason, particle.momentum, particle.posX, particle.posY, particle.posZ); } public class Particle { diff --git a/src/main/java/com/hbm/wiaj/cannery/CanneryHadron.java b/src/main/java/com/hbm/wiaj/cannery/CanneryHadron.java new file mode 100644 index 000000000..832ab1d2d --- /dev/null +++ b/src/main/java/com/hbm/wiaj/cannery/CanneryHadron.java @@ -0,0 +1,201 @@ +package com.hbm.wiaj.cannery; + +import com.hbm.blocks.ModBlocks; +import com.hbm.util.I18nUtil; +import com.hbm.wiaj.JarScene; +import com.hbm.wiaj.JarScript; +import com.hbm.wiaj.WorldInAJar; +import com.hbm.wiaj.actions.ActionCreateActor; +import com.hbm.wiaj.actions.ActionRemoveActor; +import com.hbm.wiaj.actions.ActionRotateBy; +import com.hbm.wiaj.actions.ActionSetBlock; +import com.hbm.wiaj.actions.ActionSetZoom; +import com.hbm.wiaj.actions.ActionWait; +import com.hbm.wiaj.actors.ActorFancyPanel; +import com.hbm.wiaj.actors.ActorFancyPanel.Orientation; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraftforge.common.util.ForgeDirection; + +public class CanneryHadron extends CanneryBase { + + @Override + public ItemStack getIcon() { + return new ItemStack(ModBlocks.hadron_core); + } + + @Override + public String getName() { + return "cannery.hadron"; + } + + @Override + public JarScript createScript() { + WorldInAJar world = new WorldInAJar(25, 5, 25); + JarScript script = new JarScript(world); + + + // FIRST SCENE: Show and explain the core component + JarScene scene0 = new JarScene(script); + + scene0.add(new ActionSetBlock(12, 2, 12, ModBlocks.hadron_core, ForgeDirection.NORTH.ordinal())); + + scene0.add(new ActionSetZoom(4, 0)); + + scene0.add(new ActionCreateActor(1, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -20, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.0")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(100)); + scene0.add(new ActionRemoveActor(1)); + scene0.add(new ActionWait(5)); + + scene0.add(new ActionCreateActor(2, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -20, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.1")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(100)); + scene0.add(new ActionRemoveActor(2)); + scene0.add(new ActionWait(10)); + + scene0.add(new ActionCreateActor(3, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, -14, 4, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.2")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + scene0.add(new ActionRemoveActor(3)); + scene0.add(new ActionWait(5)); + + scene0.add(new ActionRotateBy(-90, 0, 10)); + + scene0.add(new ActionCreateActor(4, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 14, 4, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.3")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene0.add(new ActionWait(80)); + scene0.add(new ActionRemoveActor(4)); + scene0.add(new ActionWait(5)); + + scene0.add(new ActionRotateBy(90, 0, 10)); + + + // SECOND SCENE: Begin building a coil around the core component + JarScene scene1 = new JarScene(script); + + scene1.add(new ActionSetBlock(12, 2, 12, ModBlocks.hadron_core, ForgeDirection.NORTH.ordinal())); + + scene1.add(new ActionSetZoom(4, 0)); + scene1.add(new ActionSetZoom(-2, 10)); + + for(int i = 0; i < 8; i++) { + double r = i * Math.PI / 4; + scene1.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 1.5F), 2 + (int)(Math.sin(r) * 1.5F), 12, ModBlocks.hadron_coil_alloy)); + scene1.add(new ActionWait(2)); + } + + scene1.add(new ActionWait(5)); + + scene1.add(new ActionCreateActor(5, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -25, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.4")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene1.add(new ActionWait(40)); + + for(Block block : new Block[] { + ModBlocks.hadron_coil_gold, + ModBlocks.hadron_coil_neodymium, + ModBlocks.hadron_coil_magtung, + ModBlocks.hadron_coil_schrabidium, + ModBlocks.hadron_coil_schrabidate, + ModBlocks.hadron_coil_starmetal, + ModBlocks.hadron_coil_chlorophyte, + ModBlocks.hadron_coil_mese + }) { + for(int i = 0; i < 8; i++) { + double r = i * Math.PI / 4; + scene1.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 1.5F), 2 + (int)(Math.sin(r) * 1.5F), 12, block)); + scene1.add(new ActionWait(1)); + } + + scene1.add(new ActionWait(4)); + } + + scene1.add(new ActionWait(20)); + scene1.add(new ActionRemoveActor(5)); + scene1.add(new ActionWait(5)); + + for(int i = 0; i < 12; i++) { + double r = i * Math.PI / 6; + scene1.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 2.75F), 2 + (int)(Math.sin(r) * 2.75F), 12, ModBlocks.hadron_plating)); + scene1.add(new ActionWait(2)); + } + + scene1.add(new ActionCreateActor(6, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -40, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.5")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene1.add(new ActionWait(60)); + scene1.add(new ActionRemoveActor(6)); + scene1.add(new ActionWait(5)); + + + // THIRD SCENE: Add the Access Terminal and Power Plug + JarScene scene2 = new JarScene(script); + + scene2.add(new ActionSetBlock(12, 2, 12, ModBlocks.hadron_core, ForgeDirection.NORTH.ordinal())); + scene2.add(new ActionSetZoom(2, 0)); + + for(int i = 0; i < 8; i++) { + double r = i * Math.PI / 4; + scene2.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 1.5F), 2 + (int)(Math.sin(r) * 1.5F), 12, ModBlocks.hadron_coil_mese)); + } + + for(int i = 0; i < 12; i++) { + double r = i * Math.PI / 6; + scene1.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 2.75F), 2 + (int)(Math.sin(r) * 2.75F), 12, ModBlocks.hadron_plating)); + } + + scene2.add(new ActionWait(5)); + + for(int i = 7; i >= 0; i--) { + double r = i * Math.PI / 4; + scene2.add(new ActionSetBlock(12 + (int)(Math.cos(r) * 1.5F), 2 + (int)(Math.sin(r) * 1.5F), 12, ModBlocks.hadron_coil_neodymium)); + scene2.add(new ActionWait(1)); + } + + scene2.add(new ActionWait(20)); + + scene2.add(new ActionSetBlock(12 - 2, 2, 12, Blocks.air)); + + scene2.add(new ActionWait(15)); + + scene2.add(new ActionSetBlock(12 - 2, 2, 12, ModBlocks.hadron_access, ForgeDirection.EAST.ordinal())); + + scene2.add(new ActionWait(10)); + + scene2.add(new ActionCreateActor(7, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 36, 18, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.6")}}, 100) + .setColors(colorCopper).setOrientation(Orientation.LEFT))); + + scene2.add(new ActionWait(80)); + scene2.add(new ActionRemoveActor(7)); + scene2.add(new ActionWait(20)); + + scene2.add(new ActionSetBlock(12, 2 + 2, 12, Blocks.air)); + + scene2.add(new ActionWait(15)); + + scene2.add(new ActionSetBlock(12, 2 + 2, 12, ModBlocks.hadron_power)); + + scene2.add(new ActionWait(10)); + + scene2.add(new ActionCreateActor(8, new ActorFancyPanel(Minecraft.getMinecraft().fontRenderer, 0, -40, new Object[][] {{I18nUtil.resolveKey("cannery.hadron.7")}}, 200) + .setColors(colorCopper).setOrientation(Orientation.BOTTOM))); + + scene2.add(new ActionWait(80)); + scene2.add(new ActionRemoveActor(8)); + scene2.add(new ActionWait(20)); + + + script.addScene(scene0).addScene(scene1).addScene(scene2); + + return script; + } + +} diff --git a/src/main/java/com/hbm/wiaj/cannery/Jars.java b/src/main/java/com/hbm/wiaj/cannery/Jars.java index 47723ba8a..5605b1a5f 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Jars.java +++ b/src/main/java/com/hbm/wiaj/cannery/Jars.java @@ -11,7 +11,7 @@ import com.hbm.items.ItemEnums.EnumPlantType; public class Jars { - public static HashMap canneries = new HashMap(); + public static HashMap canneries = new HashMap(); public static void initJars() { canneries.put(new ComparableStack(ModBlocks.heater_firebox), new CanneryFirebox()); @@ -23,6 +23,7 @@ public class Jars { canneries.put(new ComparableStack(ModBlocks.machine_silex), new CannerySILEX()); canneries.put(new ComparableStack(ModBlocks.foundry_channel), new CanneryFoundryChannel()); canneries.put(new ComparableStack(ModBlocks.machine_crucible), new CanneryCrucible()); + canneries.put(new ComparableStack(ModBlocks.hadron_core), new CanneryHadron()); canneries.put(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CanneryWillow()); canneries.put(new ComparableStack(DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.CD0)), new CanneryWillow()); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b7473cda6..0185b8ab2 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -523,6 +523,16 @@ cannery.willow.7=Now the willow's leaves can be harvested. Breaking the top bloc cannery.willow.8=Soon the plant will start growing again, yielding more leaves if the dirt is replaced with oily dirt. The leaves can be processed into cadmium powder using an ore acidizer. cannery.willow.9=Harvesting willow leaves can be automated using the automatic buzzsaw, it will only break plants that are ready for harvest. +cannery.hadron=Particle Accelerator +cannery.hadron.0=A Particle Accelerator consists of three main parts: A Core, an Analysis Chamber, and a set of Superconducting Coils +cannery.hadron.1=This is the Particle Accelerator Core Component, which fires particles at relativistic speeds down the coils towards the Analysis Chamber +cannery.hadron.2=Particles are ejected from here +cannery.hadron.3=And in circular accelerators, return to here +cannery.hadron.4=A coil segment is constructed by using 8 Dense Coils with nothing (or the core) in the middle +cannery.hadron.5=This coil segment must itself also be enclosed within Particle Accelerator Plating +cannery.hadron.6=To access the Core Component, you'll need to add one or more Access Terminals +cannery.hadron.7=The Core Component will also require power to operate, add a power plug on an edge + chem.ARSENIC=Arsenic Extraction chem.ASPHALT=Asphalt Production chem.BAKELITE=Bakelite Production