From ed6ce927a27eeeaed041725dc32fe6658cb8f736 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 19 Oct 2022 16:58:06 +0200 Subject: [PATCH] forgot some files --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../blocks/machine/MachineFieldDisturber.java | 36 ++++++ .../entity/logic/EntityNukeExplosionMK3.java | 109 +++++++++++++++--- .../java/com/hbm/main/CraftingManager.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/blocks/field_disturber.png | Bin 0 -> 286 bytes 7 files changed, 137 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/field_disturber.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 9bc08f493..6985371f3 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -930,6 +930,7 @@ public class ModBlocks { public static Block machine_teleporter; public static final int guiID_machine_teleporter = 36; public static Block teleanchor; + public static Block field_disturber; public static Block machine_reix_mainframe; public static final int guiID_machine_reix_mainframe = 38; @@ -1928,6 +1929,7 @@ public class ModBlocks { machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); //machine_rtg_red = new MachineRTG(Material.iron).setBlockName("machine_rtg_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -3232,6 +3234,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_combine_factory, machine_combine_factory.getUnlocalizedName()); GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); + GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java b/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java new file mode 100644 index 000000000..4ad885409 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java @@ -0,0 +1,36 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK3.ATEntry; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.World; + +public class MachineFieldDisturber extends Block { + + public MachineFieldDisturber() { + super(Material.iron); + } + + @Override + public int tickRate(World world) { + return 10; + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + if(!world.isRemote) world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(!world.isRemote) { + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + EntityNukeExplosionMK3.at.put(new ATEntry(world.provider.dimensionId, x, y, z), world.getTotalWorldTime() + 100); + } + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index 496ab0c32..ebbc07322 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -1,8 +1,11 @@ package com.hbm.entity.logic; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; + import org.apache.logging.log4j.Level; -import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityFalloutRain; @@ -13,10 +16,14 @@ import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionSolinium; import com.hbm.interfaces.Spaghetti; import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; import net.minecraft.world.World; @Spaghetti("why???") @@ -184,15 +191,17 @@ public class EntityNukeExplosionMK3 extends Entity { //this.worldObj.getWorldInfo().setRaining(true); did2 = true; - } - } - - age++; - } + } + } + + age++; + } @Override protected void entityInit() { } + public static HashMap at = new HashMap(); + public static EntityNukeExplosionMK3 statFacFleija(World world, double x, double y, double z, int range) { EntityNukeExplosionMK3 entity = new EntityNukeExplosionMK3(world); @@ -204,18 +213,45 @@ public class EntityNukeExplosionMK3 extends Entity { entity.coefficient = 1.0F; entity.waste = false; - if(range > 50) { + Iterator> it = at.entrySet().iterator(); + + while(it.hasNext()) { - for(int i = -1; i <= 1; i++) { - for(int j = -1; j <= 1; j++) { - for(int k = (int)y + 15; k > 5; k--) { + Entry next = it.next(); + if(next.getValue() < world.getTotalWorldTime()) { + it.remove(); + continue; + } + + ATEntry entry = next.getKey(); + if(entry.dim != world.provider.dimensionId) continue; + + Vec3 vec = Vec3.createVectorHelper(x - entry.x, y - entry.y, z - entry.z); + + if(vec.lengthVector() < 300) { + entity.setDead(); + + /* just to make sure */ + if(!world.isRemote) { + + for(int i = 0; i < 2; i++) { + double ix = i == 0 ? x : (entry.x + 0.5); + double iy = i == 0 ? y : (entry.y + 0.5); + double iz = i == 0 ? z : (entry.z + 0.5); - if(world.getBlock((int)x + i * 15, k, (int)z + j * 15) == ModBlocks.stone_porous) { - entity.destructionRange = 50; - return entity; - } + world.playSoundEffect(ix, iy, iz, "hbm:entity.ufoBlast", 15.0F, 0.7F + world.rand.nextFloat() * 0.2F); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.0F); + data.setFloat("g", 0.75F); + data.setFloat("b", 1.0F); + data.setFloat("scale", 7.5F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, ix, iy, iz), new TargetPoint(entry.dim, ix, iy, iz, 150)); } } + + break; } } @@ -226,4 +262,49 @@ public class EntityNukeExplosionMK3 extends Entity { this.extType = 1; return this; } + + public static class ATEntry { + int dim; + int x; + int y; + int z; + + public ATEntry(int dim, int x, int y, int z) { + this.dim = dim; + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public int hashCode() { + final int prime = 27644437; + int result = 1; + result = prime * result + dim; + result = prime * result + x; + result = prime * result + y; + result = prime * result + z; + return result; + } + + @Override + public boolean equals(Object obj) { + if(this == obj) + return true; + if(obj == null) + return false; + if(getClass() != obj.getClass()) + return false; + ATEntry other = (ATEntry) obj; + if(dim != other.dim) + return false; + if(x != other.x) + return false; + if(y != other.y) + return false; + if(z != other.z) + return false; + return true; + } + } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 6b1bbd525..de2539048 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -910,6 +910,7 @@ public class CraftingManager { addShapelessAuto(ItemBattery.getEmptyBattery(ModItems.anchor_remote), new Object[] { DIAMOND.gem(), ModItems.ducttape, ModItems.circuit_red_copper }); addRecipeAuto(new ItemStack(ModBlocks.teleanchor), new Object[] { "ODO", "EAE", "ODO", 'O', Blocks.obsidian, 'D', DIAMOND.gem(), 'E', ModItems.powder_magic, 'A', ModItems.gem_alexandrite }); + addRecipeAuto(new ItemStack(ModBlocks.field_disturber), new Object[] { "ICI", "CAC", "ICI", 'I', STAR.ingot(), 'C', KEY_CIRCUIT_BISMUTH, 'A', ModItems.gem_alexandrite }); addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModBlocks.muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 72da8e6f8..030295584 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3458,6 +3458,7 @@ tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke tile.factory_titanium_hull.name=Fabrikblock tile.fallout.name=Fallout tile.fence_metal.name=Maschendrahtzaun +tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma tile.fire_door.name=Brandschutztür tile.fireworks.name=Feuerwerksbatterie diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index c783c54a8..84d969081 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3896,6 +3896,7 @@ tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout tile.fence_metal.name=Chainlink Fence +tile.field_disturber.name=High Energy Field Jammer tile.fire_digamma.name=Lingering Digamma tile.fire_door.name=Fire Door tile.fireworks.name=Firework Battery diff --git a/src/main/resources/assets/hbm/textures/blocks/field_disturber.png b/src/main/resources/assets/hbm/textures/blocks/field_disturber.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9b5ec7bbbab261b8b5ec2104653a72ad41bf54 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf