This commit is contained in:
Bob 2024-01-14 18:56:25 +01:00
parent 9a955245cb
commit 32a658bd12
31 changed files with 2832 additions and 68 deletions

View File

@ -1,10 +1,14 @@
## Added
* Large Radar
* A giant version of the radar with 3x the scan range
## Changed
* Nuclear craters have been reworked
* The fallout effect no longer creates dead grass, instead it converts the area into three new biomes, the outer crater, crater and inner crater
* The entire crater is now slaked sellafite which now has texture variance to look more like debris, as well as getting darker towards the center
* The biomes being overridden means that nukes are now a solution to thaumcraft taint. Yay!
* There are now new ore variants for the block conversions which match the surrounding sellafite
* Berylliumm ore now has a 100% chance of being converted into emerald
* Beryllium ore now has a 100% chance of being converted into emerald
* The watz now cools up to 20% of its current heat level instead of 10%, making reactors a lot cooler and therefore react faster, which means more energy and faster depletion rates
* Mud production rates have been halved, to prevent currently working setups from exploding instantly
* This is your reminder that you can achieve more power, mud and depletion by building larger watz powerplants, i.e. stacking more watz segments on top of each other. Your tiny poo reactors make me sick.
@ -15,6 +19,11 @@
* Removed the old mining drill, combustion generator, old watz core, structure marker, all old large reactor parts and CMB furnace for good
* Chemical plants will now eject all their outputs within a single tick if possible, increasing the throughput of fast recipes with many outputs, like asphalt
* Hitting CTRL + ALT when hovering over an item now displays a preview of that item. Useful if you want to get authentic renders for a wiki, or just like staring at things.
* 256k tanks and BAT9000s can now output comparator signals from their fluid ports
* Trenchmaster general damage multiplier has been halved, making it twice as strong
* Updated generation rules for layers like schist and hematite, they will now only replace things tagged as stone, just like most ores
* Mushroom clouds now have two additional outer condensation rings, those are not entirely finished and are still subject to change
* Small radars are now a tad cheaper
## Fixed
* Fixed a rare crash caused by radars force-loading chunks conflicting with certain mods' chunk loading changes
@ -22,3 +31,4 @@
* Fixed trenchmaster helmet not having gas mask protection
* Fixed large thermobaric artillery rocket still using the wrong slag block
* Fixed some of the assembly templates having broken names due to using the wrong way of translating the output
* Fixed the soyuz launcher's NEI construction recipe showing the wrong amount of blocks

View File

@ -1046,6 +1046,7 @@ public class ModBlocks {
public static Block soyuz_launcher;
public static Block machine_radar;
public static Block machine_radar_large;
public static Block radar_screen;
public static Block machine_turbofan;
@ -2141,6 +2142,7 @@ public class ModBlocks {
launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad");
machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar");
machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly");
@ -3473,6 +3475,7 @@ public class ModBlocks {
GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName());
GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName());
GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName());
GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName());
GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName());
//Guide

View File

@ -129,13 +129,21 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
TileEntity te = world.getTileEntity(x, y, z);
if(!(te instanceof TileEntityMachineBAT9000))
return 0;
TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te;
return tank.getComparatorPower();
int meta = world.getBlockMetadata(x, y, z);
if(meta >= 6) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return 0;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntityMachineBAT9000))
return 0;
TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te;
return tank.getComparatorPower();
}
return 0;
}
@Override

View File

@ -169,13 +169,21 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
TileEntity te = world.getTileEntity(x, y, z);
if(!(te instanceof TileEntityMachineFluidTank))
return 0;
TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te;
return tank.getComparatorPower();
int meta = world.getBlockMetadata(x, y, z);
if(meta >= 6) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return 0;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntityMachineFluidTank))
return 0;
TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te;
return tank.getComparatorPower();
}
return 0;
}
@Override

View File

@ -0,0 +1,98 @@
package com.hbm.blocks.machine;
import com.hbm.blocks.BlockDummyable;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityMachineRadarLarge;
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineRadarLarge extends BlockDummyable {
public MachineRadarLarge(Material mat) {
super(mat);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityMachineRadarLarge();
if(meta >= 6) return new TileEntityProxyCombo().power();
return null;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(y < TileEntityMachineRadarNT.radarAltitude) {
if(world.isRemote)
player.addChatMessage(new ChatComponentText("[Radar] Error: Radar altitude not sufficient.").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
return true;
}
if(world.isRemote && !player.isSneaking()) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return false;
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
return true;
} else if(!player.isSneaking()) {
return true;
} else {
return false;
}
}
@Override
public int[] getDimensions() {
return new int[] {4, 0, 1, 1, 1, 1};
}
@Override
public int getOffset() {
return 1;
}
@Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o);
x += dir.offsetX * o;
z += dir.offsetZ * o;
this.makeExtra(world, x + 1, y, z);
this.makeExtra(world, x - 1, y, z);
this.makeExtra(world, x, y, z + 1);
this.makeExtra(world, x, y, z - 1);
}
@Override
public boolean canProvidePower() {
return true;
}
@Override
public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int m) {
int meta = world.getBlockMetadata(x, y, z);
if(meta >= 6) {
ForgeDirection dir = ForgeDirection.getOrientation(m);
TileEntity tile = world.getTileEntity(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
if(tile instanceof TileEntityMachineRadarNT) {
TileEntityMachineRadarNT entity = (TileEntityMachineRadarNT) tile;
return entity.getRedPower();
}
}
return 0;
}
@Override
public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int m) {
return isProvidingWeakPower(world, x, y, z, m);
}
}

View File

@ -209,13 +209,15 @@ public class SoyuzLauncher extends BlockDummyable {
}
}
for(int l = 0; l < 10; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38)));
for(int l = 0; l < 8; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41)));
for(int l = 0; l < 6; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 64)));
for(int l = 0; l < 4; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 64)));
for(int l = 0; l < 6; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 30)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 63)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 38)));
world.func_147453_f(x, y, z, p_149749_5_);
}

View File

@ -83,12 +83,12 @@ public class ConstructionHandler extends NEIUniversalHandler {
/* SOYUZ LAUNCHER */
ItemStack[] soysauce = new ItemStack[] {
new ItemStack(ModBlocks.struct_launcher, 60),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 320), EnumChatFormatting.RED + "5x64"),
new ItemStack(ModBlocks.struct_scaffold, 53),
new ItemStack(ModBlocks.struct_launcher, 30),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 384), EnumChatFormatting.RED + "6x64"),
new ItemStack(ModBlocks.struct_scaffold, 63),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_scaffold, 384), EnumChatFormatting.RED + "6x64"),
new ItemStack(ModBlocks.concrete_smooth, 8),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "5x64"),};
new ItemStack(ModBlocks.concrete_smooth, 38),
ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "4x64"),};
bufferedRecipes.put(soysauce, new ItemStack(ModBlocks.soyuz_launcher));
bufferedTools.put(soysauce, new ItemStack(ModBlocks.struct_soyuz_core));

View File

@ -94,8 +94,8 @@ public class GUIMachineRadarNT extends GuiScreen {
if(!radar.entries.isEmpty()) {
for(RadarEntry m : radar.entries) {
int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108;
int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117;
int x = guiLeft + (int)((m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 108;
int z = guiTop + (int)((m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 117;
if(mouseX + 5 > x && mouseX - 4 <= x && mouseY + 5 > z && mouseY - 4 <= z) {
@ -107,8 +107,8 @@ public class GUIMachineRadarNT extends GuiScreen {
}
if(checkClick(mouseX, mouseY, 8, 17, 200, 200)) {
int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord);
int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord);
int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) radar.getRange() * 2 + 1) / 192D + radar.xCoord);
int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) radar.getRange() * 2 + 1) / 192D + radar.zCoord);
this.func_146283_a(Arrays.asList(tX + " / " + tZ), lastMouseX, lastMouseY);
}
}
@ -190,8 +190,8 @@ public class GUIMachineRadarNT extends GuiScreen {
if(!radar.entries.isEmpty()) {
for(RadarEntry m : radar.entries) {
double x = (m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D;
double z = (m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D) - 4D;
double x = (m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D) - 4D;
double z = (m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D) - 4D;
int t = m.blipLevel;
drawTexturedModalRectDouble(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8);
}
@ -226,8 +226,8 @@ public class GUIMachineRadarNT extends GuiScreen {
if(!radar.entries.isEmpty()) {
for(RadarEntry m : radar.entries) {
int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 108;
int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) * (200D - 8D)) + 117;
int x = guiLeft + (int) ((m.posX - radar.xCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 108;
int z = guiTop + (int) ((m.posZ - radar.zCoord) / ((double) radar.getRange() * 2 + 1) * (200D - 8D)) + 117;
if(lastMouseX + 5 > x && lastMouseX - 4 <= x && lastMouseY + 5 > z && lastMouseY - 4 <= z) {
NBTTagCompound data = new NBTTagCompound();
@ -239,8 +239,8 @@ public class GUIMachineRadarNT extends GuiScreen {
}
}
int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.xCoord);
int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) TileEntityMachineRadarNT.radarRange * 2 + 1) / 192D + radar.zCoord);
int tX = (int) ((lastMouseX - guiLeft - 108) * ((double) radar.getRange() * 2 + 1) / 192D + radar.xCoord);
int tZ = (int) ((lastMouseY - guiTop - 117) * ((double) radar.getRange() * 2 + 1) / 192D + radar.zCoord);
NBTTagCompound data = new NBTTagCompound();
data.setInteger("launchPosX", tX);
data.setInteger("launchPosZ", tZ);

View File

@ -361,7 +361,8 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModBlocks.ams_limiter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 6), new OreDictStack(STEEL.plate(), 24), new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.crystal_diamond, 1)}, 600);
makeRecipe(new ComparableStack(ModBlocks.ams_emitter, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 24), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModBlocks.steel_scaffold, 40), new ComparableStack(ModItems.crystal_redstone, 5), new ComparableStack(ModBlocks.machine_lithium_battery)}, 600);
makeRecipe(new ComparableStack(ModBlocks.ams_base, 1), new AStack[] {new ComparableStack(ModItems.board_copper, 12), new OreDictStack(STEEL.plate(), 28), new ComparableStack(ModBlocks.steel_scaffold, 30), new ComparableStack(ModBlocks.steel_grate, 8), new ComparableStack(ModBlocks.barrel_steel, 2)}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 10), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit_gold, 4), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300);
makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300);
makeRecipe(new ComparableStack(ModBlocks.machine_radar_large, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit_gold, 2), new ComparableStack(ModItems.coil_copper, 32), new ComparableStack(ModItems.crt_display, 4), },600);
makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit_targeting_tier5, 1), new ComparableStack(ModBlocks.machine_transformer, 1), },1000);
makeRecipe(new ComparableStack(ModItems.mp_thruster_10_kerosene, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 1), new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100);
makeRecipe(new ComparableStack(ModItems.mp_thruster_10_solid, 1), new AStack[] {new ComparableStack(ModItems.seg_10, 1), new ComparableStack(ModItems.coil_tungsten, 1), new OreDictStack(DURA.ingot(), 4), new OreDictStack(STEEL.plate(), 4), },100);

View File

@ -4979,7 +4979,7 @@ public class ModItems {
ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100);
aMatTrench.customCraftingMaterial = ModItems.plate_iron;
trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.25F).setThreshold(5.0F)
trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.125F).setThreshold(5.0F)
.addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2))
.addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1))
.addEffect(new PotionEffect(Potion.jump.id, 20, 1))

View File

@ -242,6 +242,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSeleniumEngine.class, new RenderSelenium());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor());

View File

@ -245,6 +245,7 @@ public class ResourceManager {
public static final IModelCustom radar_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj"));
public static final IModelCustom radar_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/radar_head.obj"));
public static final IModelCustom radar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj"));
public static final IModelCustom radar_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj"));
public static final IModelCustom radar_screen = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj"));
//Forcefield
@ -661,6 +662,7 @@ public class ResourceManager {
public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png");
public static final ResourceLocation radar_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_base.png");
public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png");
public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png");
public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png");
//Forcefield

View File

@ -291,7 +291,9 @@ public class ItemRenderLibrary {
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glScaled(0.5, 0.5, 0.5);
GL11.glTranslatef(0, 0, 3);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.pumpjack_tex); ResourceManager.pumpjack.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_CULL_FACE);
}});
@ -338,7 +340,7 @@ public class ItemRenderLibrary {
renderers.put(Item.getItemFromBlock(ModBlocks.machine_turbofan), new ItemRenderBase() {
public void renderInventory() {
GL11.glRotated(90, 0, 1, 0);
GL11.glScaled(2, 2, 2);
GL11.glScaled(2.25, 2.25, 2.25);
}
public void renderCommon() {
GL11.glShadeModel(GL11.GL_SMOOTH);
@ -1137,7 +1139,9 @@ public class ItemRenderLibrary {
public void renderCommon() {
GL11.glScaled(0.25, 0.25, 0.25);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glDisable(GL11.GL_CULL_FACE);
bindTexture(ResourceManager.fracking_tower_tex); ResourceManager.fracking_tower.renderAll();
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_FLAT);
}});

View File

@ -0,0 +1,58 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
public class RenderRadarLarge extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glRotatef(180, 0F, 1F, 0F);
bindTexture(ResourceManager.radar_large_tex);
ResourceManager.radar_large.renderPart("Radar");
TileEntityMachineRadarNT radar = (TileEntityMachineRadarNT) tileEntity;
GL11.glRotatef(radar.prevRotation + (radar.rotation - radar.prevRotation) * f, 0F, -1F, 0F);
ResourceManager.radar_large.renderPart("Dish");
GL11.glPopMatrix();
}
@Override
public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.machine_radar_large);
}
@Override
public IItemRenderer getRenderer() {
return new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -5, 0);
GL11.glScaled(3, 3, 3);
}
public void renderCommonWithStack(ItemStack item) {
GL11.glRotated(180, 0, 1, 0);
GL11.glScaled(0.5, 0.5, 0.5);
bindTexture(ResourceManager.radar_large_tex);
ResourceManager.radar_large.renderPart("Radar");
GL11.glRotated(System.currentTimeMillis() % 3600 * 0.1D, 0, -1, 0);
ResourceManager.radar_large.renderPart("Dish");
}};
}
}

View File

@ -5,9 +5,11 @@ import com.hbm.packet.AuxGaugePacket;
import com.hbm.packet.BufPacket;
import com.hbm.packet.NBTPacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
@ -221,4 +223,27 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme
return Math.max(volume, 0);
}
public void updateRedstoneConnection(DirPos pos) {
int x = pos.getX();
int y = pos.getY();
int z = pos.getZ();
ForgeDirection dir = pos.getDir();
Block block1 = worldObj.getBlock(x, y, z);
block1.onNeighborChange(worldObj, x, y, z, xCoord, yCoord, zCoord);
block1.onNeighborBlockChange(worldObj, x, y, z, this.getBlockType());
if(block1.isNormalCube(worldObj, x, y, z)) {
x += dir.offsetX;
y += dir.offsetY;
z += dir.offsetZ;
Block block2 = worldObj.getBlock(x, y, z);
if(block2.getWeakChanges(worldObj, x, y, z)) {
block2.onNeighborChange(worldObj, x, y, z, xCoord, yCoord, zCoord);
block2.onNeighborBlockChange(worldObj, x, y, z, this.getBlockType());
}
}
}
}

View File

@ -112,6 +112,7 @@ public class TileMappings {
put(TileEntityMachineRadGen.class, "tileentity_radgen");
put(TileEntityMachineTransformer.class, "tileentity_transformer");
put(TileEntityMachineRadarNT.class, "tileentity_radar");
put(TileEntityMachineRadarLarge.class, "tileentity_radar_large");
put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen");
put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster");
put(TileEntityMachineSeleniumEngine.class, "tileentity_selenium_engine");

View File

@ -0,0 +1,41 @@
package com.hbm.tileentity.machine;
import com.hbm.lib.Library;
import com.hbm.util.fauxpointtwelve.DirPos;
import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineRadarLarge extends TileEntityMachineRadarNT {
@Override
public int getRange() {
return radarLargeRange;
}
@Override
public DirPos[] getConPos() {
return new DirPos[] {
new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X),
new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X),
new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z),
new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z),
};
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(
xCoord - 5,
yCoord,
zCoord - 5,
xCoord + 6,
yCoord + 10,
zCoord + 6
);
}
return bb;
}
}

View File

@ -19,6 +19,8 @@ import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemCoordinateBase;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.saveddata.SatelliteSavedData;
import com.hbm.saveddata.satellites.Satellite;
import com.hbm.saveddata.satellites.Satellite.Interfaces;
@ -30,6 +32,7 @@ import com.hbm.tileentity.IRadarCommandReceiver;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.Tuple.Triplet;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
import com.hbm.world.WorldUtil;
import api.hbm.energy.IEnergyUser;
@ -37,10 +40,12 @@ import api.hbm.entity.IRadarDetectable;
import api.hbm.entity.IRadarDetectableNT;
import api.hbm.entity.IRadarDetectableNT.RadarScanParams;
import api.hbm.entity.RadarEntry;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.block.Block;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@ -54,6 +59,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Now with SmЯt lag-free entity detection! (patent pending)
@ -82,6 +88,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
public static int maxPower = 100_000;
public static int consumption = 500;
public static int radarRange = 1_000;
public static int radarLargeRange = 3_000;
public static int radarBuffer = 30;
public static int radarAltitude = 55;
public static int chunkLoadCap = 10;
@ -102,6 +109,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower);
consumption = IConfigurableMachine.grab(obj, "L:consumption", consumption);
radarRange = IConfigurableMachine.grab(obj, "I:radarRange", radarRange);
radarLargeRange = IConfigurableMachine.grab(obj, "I:radarLargeRange", radarLargeRange);
radarBuffer = IConfigurableMachine.grab(obj, "I:radarBuffer", radarBuffer);
radarAltitude = IConfigurableMachine.grab(obj, "I:radarAltitude", radarAltitude);
chunkLoadCap = IConfigurableMachine.grab(obj, "I:chunkLoadCap", chunkLoadCap);
@ -113,6 +121,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
writer.name("L:powerCap").value(maxPower);
writer.name("L:consumption").value(consumption);
writer.name("I:radarRange").value(radarRange);
writer.name("I:radarLargeRange").value(radarLargeRange);
writer.name("I:radarBuffer").value(radarBuffer);
writer.name("I:radarAltitude").value(radarAltitude);
writer.name("B:generateChunks").value(generateChunks);
@ -126,6 +135,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
public String getName() {
return "container.radar";
}
public int getRange() {
return radarRange;
}
@Override
public void updateEntity() {
@ -136,14 +149,19 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
this.power = Library.chargeTEFromItems(slots, 9, power, maxPower);
if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord);
if(worldObj.getTotalWorldTime() % 20 == 0) {
for(DirPos pos : getConPos()) {
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
}
}
this.power = Library.chargeTEFromItems(slots, 0, power, maxPower);
this.jammed = false;
allocateTargets();
if(this.lastPower != getRedPower()) {
this.markDirty();
this.markChanged();
for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos);
}
lastPower = getRedPower();
@ -161,11 +179,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
int chunkLoads = 0;
for(int i = 0; i < 100; i++) {
int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i;
int iX = (index % 200) * radarRange * 2 / 200;
int iZ = index / 200 * radarRange * 2 / 200;
int iX = (index % 200) * getRange() * 2 / 200;
int iZ = index / 200 * getRange() * 2 / 200;
int x = xCoord - radarRange + iX;
int z = zCoord - radarRange + iZ;
int x = xCoord - getRange() + iX;
int z = zCoord - getRange() + iZ;
if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) {
this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128);
@ -217,6 +235,15 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
}
}
public DirPos[] getConPos() {
return new DirPos[] {
new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X),
new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X),
new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z),
new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z),
};
}
@Override
public void serialize(ByteBuf buf) {
buf.writeLong(this.power);
@ -341,7 +368,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
/// PROXIMITY ///
if(redMode) {
double maxRange = WeaponConfig.radarRange * Math.sqrt(2D);
double maxRange = this.getRange() * Math.sqrt(2D);
int power = 0;
for(int i = 0; i < entries.size(); i++) {

View File

@ -97,8 +97,10 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
if(!worldObj.isRemote) {
byte comp = this.getComparatorPower(); //do comparator shenanigans
if(comp != this.lastRedstone)
if(comp != this.lastRedstone) {
this.markDirty();
for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos);
}
this.lastRedstone = comp;
tank.setType(0, 1, slots);

View File

@ -131,8 +131,10 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
}
byte comp = this.getComparatorPower(); //comparator shit
if(comp != this.lastRedstone)
if(comp != this.lastRedstone) {
this.markDirty();
for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos);
}
this.lastRedstone = comp;
if(tank.getFill() > 0) {

View File

@ -3,11 +3,11 @@ package com.hbm.world.feature;
import java.util.Random;
import com.hbm.blocks.BlockEnums.EnumBiomeType;
import com.hbm.world.generator.DungeonToolbox;
import com.hbm.blocks.ModBlocks;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenBase.TempCategory;
@ -96,7 +96,7 @@ public class BiomeCave {
private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) {
Block target = world.getBlock(x, y, z);
if(target.isNormalCube() && DungeonToolbox.allowedToReplace(target)) {
if(target.isNormalCube() && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
boolean shouldGen = false;

View File

@ -3,11 +3,11 @@ package com.hbm.world.feature;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.util.ForgeDirection;
@ -51,7 +51,7 @@ public class DeepLayer {
Block target = world.getBlock(x, y, z);
if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) {
if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
boolean lava = false;

View File

@ -5,11 +5,11 @@ import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockStalagmite;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
@ -104,7 +104,7 @@ public class OreCave {
for(int y = yLevel - range; y <= yLevel + range; y++) {
Block genTarget = world.getBlock(x, y, z);
if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && DungeonToolbox.allowedToReplace(genTarget)) {
if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground) && genTarget.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
boolean shouldGen = false;
boolean canGenFluid = event.rand.nextBoolean();

View File

@ -3,7 +3,6 @@ package com.hbm.world.feature;
import java.util.Random;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
@ -100,7 +99,7 @@ public class OreLayer {
if(event.rand.nextFloat() < density) {
Block genTarget = world.getBlock(x, y, z);
if(genTarget.isReplaceableOreGen(world, x, y, z, target) && DungeonToolbox.allowedToReplace(genTarget)) {
if(genTarget.isReplaceableOreGen(world, x, y, z, target) && genTarget.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
world.setBlock(x, y, z, ore.block, ore.meta, 2);
}
}

View File

@ -2,11 +2,10 @@ package com.hbm.world.feature;
import java.util.Random;
import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
@ -76,7 +75,7 @@ public class OreLayer3D {
if(nX * nY * nZ > threshold) {
Block target = world.getBlock(x, y, z);
if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) {
if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
world.setBlock(x, y, z, block, meta, 2);
}
}

View File

@ -3,11 +3,11 @@ package com.hbm.world.feature;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.world.generator.DungeonToolbox;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
@ -52,7 +52,7 @@ public class SchistStratum {
Block target = world.getBlock(x, y, z);
if(target.isNormalCube() && target.getMaterial() == Material.rock && DungeonToolbox.allowedToReplace(target)) {
if(target.isNormalCube() && target.getMaterial() == Material.rock && target.isReplaceableOreGen(world, x, y, z, Blocks.stone)) {
world.setBlock(x, y, z, ModBlocks.stone_gneiss, 0, 2);
}
}

View File

@ -94,12 +94,4 @@ public class DungeonToolbox {
genFlowers.func_150550_a(flower, meta);
genFlowers.generate(world, rand, x, y, z);
}
public static boolean allowedToReplace(Block block) {
if(block == Blocks.end_portal_frame) return false;
if(block == Blocks.bedrock) return false;
return true;
}
}

View File

@ -4147,6 +4147,7 @@ tile.machine_press.name=Befeuerte Presse
tile.machine_puf6_tank.name=Plutoniumhexafluorid-Tank
tile.machine_pumpjack.name=Pferdekopfpumpe
tile.machine_radar.name=Radar
tile.machine_radar_large.name=Großes Radar
tile.machine_radgen.name=Strahlenbetriebener Generator
tile.machine_reactor.name=Brutreaktor
tile.machine_reactor_on.name=Brutreaktor

View File

@ -5136,6 +5136,7 @@ tile.machine_press.name=Burner Press
tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank
tile.machine_pumpjack.name=Pumpjack
tile.machine_radar.name=Radar
tile.machine_radar_large.name=Large Radar
tile.machine_radgen.name=Radiation-Powered Engine
tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber
tile.machine_reactor.name=Breeding Reactor

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB