Skip to content

Commit 3199cac

Browse files
First precision laser engraver pass
- Multiblock is working - Block item model is currently broken - Recipes are funky sometimes - Renderer can be jumpy in spots - Otherwise functional however
1 parent b2eee54 commit 3199cac

20 files changed

+1273
-2
lines changed

src/main/java/zmaster587/advancedRocketry/AdvancedRocketry.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ public void preInit(FMLPreInitializationEvent event)
431431
GameRegistry.registerTileEntity(TileBlackHoleGenerator.class, "ARblackholegenerator");
432432
GameRegistry.registerTileEntity(TilePump.class, new ResourceLocation(Constants.modId, "ARpump"));
433433
GameRegistry.registerTileEntity(TileCentrifuge.class, new ResourceLocation(Constants.modId, "ARCentrifuge"));
434+
GameRegistry.registerTileEntity(TilePrecisionLaserEngraver.class, new ResourceLocation(Constants.modId, "ARPrecisionLaserEngraver"));
434435

435436
if(zmaster587.advancedRocketry.api.ARConfiguration.getCurrentConfig().enableGravityController)
436437
GameRegistry.registerTileEntity(TileGravityController.class, "ARGravityMachine");
@@ -447,6 +448,7 @@ public void preInit(FMLPreInitializationEvent event)
447448
LibVulpes.registerRecipeHandler(TileRollingMachine.class, event.getModConfigurationDirectory().getAbsolutePath() + "/" + zmaster587.advancedRocketry.api.ARConfiguration.configFolder + "/RollingMachine.xml");
448449
LibVulpes.registerRecipeHandler(BlockPress.class, event.getModConfigurationDirectory().getAbsolutePath() + "/" + zmaster587.advancedRocketry.api.ARConfiguration.configFolder + "/SmallPlatePress.xml");
449450
LibVulpes.registerRecipeHandler(TileCentrifuge.class, event.getModConfigurationDirectory().getAbsolutePath() + "/" + zmaster587.advancedRocketry.api.ARConfiguration.configFolder + "/Centrifuge.xml");
451+
LibVulpes.registerRecipeHandler(TilePrecisionLaserEngraver.class, event.getModConfigurationDirectory().getAbsolutePath() + "/" + zmaster587.advancedRocketry.api.ARConfiguration.configFolder + "/PrecisionLaserEngraver.xml");
450452

451453

452454

@@ -473,6 +475,7 @@ public void preInit(FMLPreInitializationEvent event)
473475
machineRecipes.registerMachine(TileRollingMachine.class);
474476
machineRecipes.registerMachine(TileCrystallizer.class);
475477
machineRecipes.registerMachine(TileCentrifuge.class);
478+
machineRecipes.registerMachine(TilePrecisionLaserEngraver.class);
476479
}
477480

478481
@SubscribeEvent(priority=EventPriority.HIGH)
@@ -610,6 +613,7 @@ public void registerItems(RegistryEvent.Register<Item> evt)
610613
OreDictionary.registerOre("waferSilicon", new ItemStack(AdvancedRocketryItems.itemWafer,1,0));
611614
OreDictionary.registerOre("ingotCarbon", new ItemStack(AdvancedRocketryItems.itemMisc, 1, 1));
612615
OreDictionary.registerOre("itemLens", AdvancedRocketryItems.itemLens);
616+
OreDictionary.registerOre("lensPrecisionLaserEngraver", AdvancedRocketryItems.itemLens);
613617
OreDictionary.registerOre("itemSilicon", MaterialRegistry.getItemStackFromMaterialAndType("Silicon", AllowedProducts.getProductByName("INGOT")));
614618
OreDictionary.registerOre("dustThermite", new ItemStack(AdvancedRocketryItems.itemThermite));
615619
OreDictionary.registerOre("slab", new ItemStack(Blocks.STONE_SLAB));
@@ -703,6 +707,7 @@ public void registerBlocks(RegistryEvent.Register<Block> evt)
703707
AdvancedRocketryBlocks.blockCrystallizer = new BlockMultiblockMachine(TileCrystallizer.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("Crystallizer").setCreativeTab(tabAdvRocketry).setHardness(3f);
704708
AdvancedRocketryBlocks.blockWarpCore = new BlockWarpCore(TileWarpCore.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("warpCore").setCreativeTab(tabAdvRocketry).setHardness(3f);
705709
AdvancedRocketryBlocks.blockChemicalReactor = new BlockMultiblockMachine(TileChemicalReactor.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("chemreactor").setCreativeTab(tabAdvRocketry).setHardness(3f);
710+
AdvancedRocketryBlocks.blockPrecisionLaserEngraver = new BlockMultiblockMachine(TilePrecisionLaserEngraver.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("precisionlaserengraver").setCreativeTab(tabAdvRocketry).setHardness(3f);
706711
AdvancedRocketryBlocks.blockLathe = new BlockMultiblockMachine(TileLathe.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("lathe").setCreativeTab(tabAdvRocketry).setHardness(3f);
707712
AdvancedRocketryBlocks.blockRollingMachine = new BlockMultiblockMachine(TileRollingMachine.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("rollingMachine").setCreativeTab(tabAdvRocketry).setHardness(3f);
708713
AdvancedRocketryBlocks.blockElectrolyser = new BlockMultiblockMachine(TileElectrolyser.class, GuiHandler.guiId.MODULAR.ordinal()).setUnlocalizedName("electrolyser").setCreativeTab(tabAdvRocketry).setHardness(3f);
@@ -833,6 +838,7 @@ public void registerBlocks(RegistryEvent.Register<Block> evt)
833838
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockStationBuilder.setRegistryName("stationBuilder"));
834839
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockElectrolyser.setRegistryName("electrolyser"));
835840
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockChemicalReactor.setRegistryName("chemicalReactor"));
841+
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockPrecisionLaserEngraver.setRegistryName("precisionlaserengraver"));
836842
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockOxygenScrubber.setRegistryName("oxygenScrubber"));
837843
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockOxygenVent.setRegistryName("oxygenVent"));
838844
LibVulpesBlocks.registerBlock(AdvancedRocketryBlocks.blockOxygenCharger.setRegistryName("oxygenCharger"));
@@ -1037,6 +1043,7 @@ public void postInit(FMLPostInitializationEvent event)
10371043
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TileLathe(), (BlockTile)AdvancedRocketryBlocks.blockLathe);
10381044
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TileCrystallizer(), (BlockTile)AdvancedRocketryBlocks.blockCrystallizer);
10391045
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TilePrecisionAssembler(), (BlockTile)AdvancedRocketryBlocks.blockPrecisionAssembler);
1046+
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TilePrecisionLaserEngraver(), (BlockTile)AdvancedRocketryBlocks.blockPrecisionLaserEngraver);
10401047
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TileObservatory(), (BlockTile)AdvancedRocketryBlocks.blockObservatory);
10411048
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TileAstrobodyDataProcessor(), (BlockTile)AdvancedRocketryBlocks.blockPlanetAnalyser);
10421049
((ItemProjector)LibVulpesItems.itemHoloProjector).registerMachine(new TileRollingMachine(), (BlockTile)AdvancedRocketryBlocks.blockRollingMachine);

src/main/java/zmaster587/advancedRocketry/api/AdvancedRocketryBlocks.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public class AdvancedRocketryBlocks {
4343
public static Block blockOxygenFluid;
4444
public static Block blockHydrogenFluid;
4545
public static Block blockChemicalReactor;
46+
public static Block blockPrecisionLaserEngraver;
4647
public static Block blockFuelFluid;
4748
public static Block test;
4849
public static Block blockOxygenVent;

src/main/java/zmaster587/advancedRocketry/client/ClientProxy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void registerRenderers() {
102102
ClientRegistry.bindTileEntitySpecialRenderer(zmaster587.advancedRocketry.tile.multiblock.TileSpaceElevator.class, new zmaster587.advancedRocketry.client.render.multiblocks.RendererSpaceElevator());
103103
ClientRegistry.bindTileEntitySpecialRenderer(zmaster587.advancedRocketry.tile.multiblock.TileBeacon.class, new zmaster587.advancedRocketry.client.render.multiblocks.RenderBeacon());
104104
ClientRegistry.bindTileEntitySpecialRenderer(zmaster587.advancedRocketry.tile.multiblock.machine.TileCentrifuge.class, new zmaster587.advancedRocketry.client.render.multiblocks.RenderCentrifuge());
105+
ClientRegistry.bindTileEntitySpecialRenderer(zmaster587.advancedRocketry.tile.multiblock.machine.TilePrecisionLaserEngraver.class, new RendererPrecisionLaserEngraver());
105106

106107
//ClientRegistry.bindTileEntitySpecialRenderer(TileModelRenderRotatable.class, modelBlock);
107108

@@ -227,6 +228,7 @@ public void preInitBlocks()
227228
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockPlanetHoloSelector));
228229
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockPlanetSelector));
229230
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockPrecisionAssembler));
231+
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockPrecisionLaserEngraver));
230232
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockPressureTank));
231233
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockQuartzCrucible));
232234
blockItems.add(Item.getItemFromBlock(AdvancedRocketryBlocks.blockRailgun));
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package zmaster587.advancedRocketry.client.render.multiblocks;
2+
3+
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
4+
import net.minecraft.item.ItemStack;
5+
import net.minecraft.tileentity.TileEntity;
6+
import net.minecraft.util.EnumFacing;
7+
import net.minecraft.util.ResourceLocation;
8+
import org.lwjgl.opengl.GL11;
9+
import zmaster587.advancedRocketry.backwardCompat.ModelFormatException;
10+
import zmaster587.advancedRocketry.backwardCompat.WavefrontObject;
11+
import zmaster587.libVulpes.api.material.MaterialRegistry;
12+
import zmaster587.libVulpes.block.RotatableBlock;
13+
import zmaster587.libVulpes.tile.multiblock.TileMultiblockMachine;
14+
15+
public class RendererPrecisionLaserEngraver extends TileEntitySpecialRenderer {
16+
WavefrontObject model;
17+
18+
ResourceLocation texture = new ResourceLocation("advancedrocketry:textures/models/precisionlaserengraver.png");
19+
20+
public RendererPrecisionLaserEngraver() {
21+
try {
22+
model = new WavefrontObject(new ResourceLocation("advancedrocketry:models/precisionlaserengraver.obj"));
23+
} catch (ModelFormatException e) {
24+
e.printStackTrace();
25+
}
26+
27+
}
28+
29+
@Override
30+
public void render(TileEntity tile, double x,
31+
double y, double z, float f, int damage, float a) {
32+
TileMultiblockMachine multiBlockTile = (TileMultiblockMachine)tile;
33+
34+
if(!multiBlockTile.canRender())
35+
return;
36+
37+
GL11.glPushMatrix();
38+
39+
//Rotate and move the model into position
40+
GL11.glTranslated(x + .5f, y, z + 0.5f);
41+
EnumFacing front = RotatableBlock.getFront(tile.getWorld().getBlockState(tile.getPos())); //tile.getWorldObj().getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord));
42+
GL11.glTranslated(0.5f, 0f, 1.5f);
43+
44+
45+
if(multiBlockTile.isRunning()) {
46+
47+
float progress = multiBlockTile.getProgress(0)/(float)multiBlockTile.getTotalProgress(0);
48+
49+
bindTexture(texture);
50+
model.renderPart("Hull");
51+
52+
//Full assembly translation and render
53+
GL11.glPushMatrix();
54+
float progress2 = ((16 * progress) - (int)(16 * progress));
55+
56+
if (progress < 0.875){
57+
if (progress2 > 0.875) {
58+
GL11.glTranslatef(0f, 0f, ((progress / 16.0f) * (1.0f / progress2)));
59+
}
60+
GL11.glTranslatef(0f, 0f, (progress - (progress2/16f)));
61+
} else
62+
GL11.glTranslatef(0f, 0f, ((1 - progress) / .15f));
63+
64+
model.renderPart("Mount");
65+
66+
//Render laser and laser translation
67+
GL11.glPushMatrix();
68+
if (progress < 0.875) {
69+
if (progress2 < 0.875f)
70+
GL11.glTranslatef(-progress2, 0f, 0f);
71+
else
72+
GL11.glTranslatef(-((1 - progress2) / .15f), 0f, 0f);
73+
}
74+
model.renderPart("Laser");
75+
GL11.glPopMatrix();
76+
GL11.glPopMatrix();
77+
78+
79+
}
80+
else {
81+
bindTexture(texture);
82+
model.renderAll();
83+
}
84+
GL11.glPopMatrix();
85+
}
86+
}

src/main/java/zmaster587/advancedRocketry/integration/jei/ARPlugin.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import zmaster587.advancedRocketry.integration.jei.precisionAssembler.PrecisionAssemblerCategory;
3030
import zmaster587.advancedRocketry.integration.jei.precisionAssembler.PrecisionAssemblerRecipeHandler;
3131
import zmaster587.advancedRocketry.integration.jei.precisionAssembler.PrecisionAssemblerRecipeMaker;
32+
import zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe.PrecisionLaserEngraverCategory;
33+
import zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe.PrecisionLaserEngraverRecipeHandler;
34+
import zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe.PrecisionLaserEngraverRecipeMaker;
3235
import zmaster587.advancedRocketry.integration.jei.rollingMachine.RollingMachineCategory;
3336
import zmaster587.advancedRocketry.integration.jei.rollingMachine.RollingMachineRecipeHandler;
3437
import zmaster587.advancedRocketry.integration.jei.rollingMachine.RollingMachineRecipeMaker;
@@ -54,6 +57,7 @@ public class ARPlugin extends BlankModPlugin {
5457
public static final String arcFurnaceUUID = "zmaster587.AR.arcFurnace";
5558
public static final String platePresser = "zmaster587.AR.platePresser";
5659
public static final String centrifugeUUID = "zmaster587.AR.centrifuge";
60+
public static final String precisionLaserEngraverUUID = "zmaster587.AR.precisionlaserengraver";
5761

5862
public static void reload() {
5963
jeiHelpers.reload();
@@ -92,7 +96,8 @@ public Object getIngredientUnderMouse(GuiModular guiContainer,
9296
new ElectrolyzerCategory(guiHelper),
9397
new BlastFurnaceCategory(guiHelper),
9498
new PlatePressCategory(guiHelper),
95-
new CentrifugeCategory(guiHelper));
99+
new CentrifugeCategory(guiHelper),
100+
new PrecisionLaserEngraverCategory(guiHelper));
96101

97102
registry.addRecipeHandlers(new RollingMachineRecipeHandler(),
98103
new LatheRecipeHandler(),
@@ -103,7 +108,8 @@ public Object getIngredientUnderMouse(GuiModular guiContainer,
103108
new ElectrolyzerRecipeHandler(),
104109
new BlastFurnaceRecipeHandler(),
105110
new PlatePressRecipeHandler(),
106-
new CentrifugeRecipeHandler());
111+
new CentrifugeRecipeHandler(),
112+
new PrecisionLaserEngraverRecipeHandler());
107113

108114
registry.addRecipes(RollingMachineRecipeMaker.getMachineRecipes(jeiHelpers, TileRollingMachine.class));
109115
registry.addRecipes(LatheRecipeMaker.getMachineRecipes(jeiHelpers, TileLathe.class));
@@ -115,6 +121,7 @@ public Object getIngredientUnderMouse(GuiModular guiContainer,
115121
registry.addRecipes(ElectrolyzerRecipeMaker.getMachineRecipes(jeiHelpers, TileElectrolyser.class));
116122
registry.addRecipes(ChemicalReactorRecipeMaker.getMachineRecipes(jeiHelpers, TileChemicalReactor.class));
117123
registry.addRecipes(CentrifugeRecipeMaker.getMachineRecipes(jeiHelpers, TileCentrifuge.class));
124+
registry.addRecipes(PrecisionLaserEngraverRecipeMaker.getMachineRecipes(jeiHelpers, TilePrecisionLaserEngraver.class));
118125

119126

120127
registry.addRecipeCategoryCraftingItem(new ItemStack(AdvancedRocketryBlocks.blockRollingMachine), rollingMachineUUID);
@@ -127,5 +134,6 @@ public Object getIngredientUnderMouse(GuiModular guiContainer,
127134
registry.addRecipeCategoryCraftingItem(new ItemStack(AdvancedRocketryBlocks.blockArcFurnace), arcFurnaceUUID);
128135
registry.addRecipeCategoryCraftingItem(new ItemStack(AdvancedRocketryBlocks.blockPlatePress), platePresser);
129136
registry.addRecipeCategoryCraftingItem(new ItemStack(AdvancedRocketryBlocks.blockCentrifuge), centrifugeUUID);
137+
registry.addRecipeCategoryCraftingItem(new ItemStack(AdvancedRocketryBlocks.blockPrecisionLaserEngraver), precisionLaserEngraverUUID);
130138
}
131139
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe;
2+
3+
import mezz.jei.api.IGuiHelper;
4+
import zmaster587.advancedRocketry.integration.jei.ARPlugin;
5+
import zmaster587.advancedRocketry.integration.jei.MachineCategoryTemplate;
6+
import zmaster587.advancedRocketry.inventory.TextureResources;
7+
import zmaster587.libVulpes.LibVulpes;
8+
9+
public class PrecisionLaserEngraverCategory extends MachineCategoryTemplate<PrecisionLaserEngraverWrapper> {
10+
11+
public PrecisionLaserEngraverCategory(IGuiHelper helper) {
12+
super(helper, TextureResources.latheProgressBar);
13+
}
14+
15+
@Override
16+
public String getUid() {
17+
return ARPlugin.precisionLaserEngraverUUID;
18+
}
19+
20+
@Override
21+
public String getTitle() {
22+
return LibVulpes.proxy.getLocalizedString("tile.precisionlaserengraver.name");
23+
}
24+
25+
@Override
26+
public String getModName()
27+
{
28+
return "Advanced Rocketry";
29+
}
30+
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe;
2+
3+
import mezz.jei.api.recipe.IRecipeHandler;
4+
import mezz.jei.api.recipe.IRecipeWrapper;
5+
import zmaster587.advancedRocketry.integration.jei.ARPlugin;
6+
7+
public class PrecisionLaserEngraverRecipeHandler implements IRecipeHandler<PrecisionLaserEngraverWrapper> {
8+
9+
@Override
10+
public Class<PrecisionLaserEngraverWrapper> getRecipeClass() {
11+
return PrecisionLaserEngraverWrapper.class;
12+
}
13+
14+
@Override
15+
public String getRecipeCategoryUid(PrecisionLaserEngraverWrapper recipe) { return ARPlugin.precisionLaserEngraverUUID; }
16+
17+
@Override
18+
public IRecipeWrapper getRecipeWrapper(PrecisionLaserEngraverWrapper recipe) {
19+
return recipe;
20+
}
21+
22+
@Override
23+
public boolean isRecipeValid(PrecisionLaserEngraverWrapper recipe) {
24+
return true;
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe;
2+
3+
import mezz.jei.api.IJeiHelpers;
4+
import zmaster587.libVulpes.interfaces.IRecipe;
5+
import zmaster587.libVulpes.recipe.RecipesMachine;
6+
7+
import java.util.LinkedList;
8+
import java.util.List;
9+
10+
public class PrecisionLaserEngraverRecipeMaker {
11+
12+
public static List<PrecisionLaserEngraverWrapper> getMachineRecipes(IJeiHelpers helpers, Class clazz) {
13+
14+
List<PrecisionLaserEngraverWrapper> list = new LinkedList<PrecisionLaserEngraverWrapper>();
15+
for(IRecipe rec : RecipesMachine.getInstance().getRecipes(clazz)) {
16+
list.add(new PrecisionLaserEngraverWrapper(rec));
17+
}
18+
return list;
19+
}
20+
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package zmaster587.advancedRocketry.integration.jei.precisionLaserEngraver.lathe;
2+
3+
import zmaster587.advancedRocketry.integration.jei.MachineRecipe;
4+
import zmaster587.libVulpes.interfaces.IRecipe;
5+
6+
public class PrecisionLaserEngraverWrapper extends MachineRecipe {
7+
8+
PrecisionLaserEngraverWrapper(IRecipe rec) {
9+
super(rec);
10+
}
11+
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package zmaster587.advancedRocketry.recipe;
2+
3+
import zmaster587.advancedRocketry.tile.multiblock.machine.TilePrecisionLaserEngraver;
4+
import zmaster587.libVulpes.recipe.RecipeMachineFactory;
5+
6+
public class RecipePrecisionLaserEngraver extends RecipeMachineFactory {
7+
8+
@Override
9+
public Class getMachine() {
10+
return TilePrecisionLaserEngraver.class;
11+
}
12+
}

0 commit comments

Comments
 (0)