diff --git a/.idea/workspace.xml b/.idea/workspace.xml index c2960e3..539dbac 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,21 +1,20 @@ - - - - - - - + + + + + - - + + - + - + + @@ -105,6 +112,7 @@ - \ No newline at end of file diff --git a/src/lang/en_US_Mod.lang b/src/lang/en_US_Mod.lang index fd20936..ee5544a 100644 --- a/src/lang/en_US_Mod.lang +++ b/src/lang/en_US_Mod.lang @@ -1317,4 +1317,7 @@ mco.gameMode.adventure.line2=be added or removed -tile.test.name=TestBlock \ No newline at end of file +tile.test.name=TestBlock +item.detonator.name=Detonator +tile.nuke.name=Nuclear Bomb +tile.chunkDeleter.name=Chunk Destroyer \ No newline at end of file diff --git a/src/net/minecraft/src/Block.java b/src/net/minecraft/src/Block.java index dbb94e9..a0f1f8c 100644 --- a/src/net/minecraft/src/Block.java +++ b/src/net/minecraft/src/Block.java @@ -3,6 +3,7 @@ package net.minecraft.src; import java.util.List; import java.util.Random; import net.minecraft.src.mml.BlockLoader; +import net.minecraft.src.mml.Blocks.BlockChunkDeleter; import net.minecraft.src.mml.Blocks.BlockNuke; public class Block { @@ -189,6 +190,7 @@ public class Block { public static final Block test = Loader.registerBlock(159, Material.ground, "test", CreativeTabs.tabDebug); public static final Block nuke = (new BlockNuke(160)).setHardness(0.0F).setStepSound(soundGrassFootstep).setUnlocalizedName("nuke"); + public static final Block chunkDeleter = (new BlockChunkDeleter(161)).setUnlocalizedName("chunkDeleter"); public final int blockID; protected float blockHardness; diff --git a/src/net/minecraft/src/EntityLargeFireball.java b/src/net/minecraft/src/EntityLargeFireball.java index f4ba262..f879073 100644 --- a/src/net/minecraft/src/EntityLargeFireball.java +++ b/src/net/minecraft/src/EntityLargeFireball.java @@ -21,7 +21,7 @@ public class EntityLargeFireball extends EntityFireball { var1.entityHit.attackEntityFrom(DamageSource.causeFireballDamage(this, this.shootingEntity), 6); } - this.worldObj.newExplosion((Entity)null, this.posX, this.posY, this.posZ, (float)this.field_92057_e, true, this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing")); + this.worldObj.newExplosion((Entity)null, this.posX, this.posY, this.posZ, (float)this.field_92057_e, false, this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing")); this.setDead(); } diff --git a/src/net/minecraft/src/Explosion.java b/src/net/minecraft/src/Explosion.java index 53301cb..9b62a16 100644 --- a/src/net/minecraft/src/Explosion.java +++ b/src/net/minecraft/src/Explosion.java @@ -11,6 +11,15 @@ import java.util.Random; public class Explosion { public boolean isFlaming = false; public boolean isSmoking = true; + + // all custom modifiers + + public boolean isWasting = false; + public boolean isWatering = false; + + + + private int field_77289_h = 16; private Random explosionRNG = new Random(); private World worldObj; @@ -192,6 +201,22 @@ public class Explosion { } } + if (this.isWasting) { + var2 = this.affectedBlockPositions.iterator(); + + while(var2.hasNext()) { + var3 = (ChunkPosition)var2.next(); + var4 = var3.x; + var5 = var3.y; + var6 = var3.z; + var7 = this.worldObj.getBlockId(var4, var5, var6); + int var25 = this.worldObj.getBlockId(var4, var5 - 1, var6); + if(var7 == 0 && Block.opaqueCubeLookup[var25] && this.explosionRNG.nextInt(3) == 0) { + this.worldObj.setBlock(var4, var5, var6, Block.bedrock.blockID); + } + } + } + } public Map func_77277_b() { diff --git a/src/net/minecraft/src/Item.java b/src/net/minecraft/src/Item.java index c21ca3c..4f21661 100644 --- a/src/net/minecraft/src/Item.java +++ b/src/net/minecraft/src/Item.java @@ -1,5 +1,7 @@ package net.minecraft.src; +import net.minecraft.src.mml.Items.Detonator; + import java.util.List; import java.util.Random; @@ -160,6 +162,15 @@ public class Item { public static Item netherQuartz = (new Item(150)).setUnlocalizedName("netherquartz").setCreativeTab(CreativeTabs.tabMaterials); public static Item minecartTnt = (new ItemMinecart(151, 3)).setUnlocalizedName("minecartTnt"); public static Item minecartHopper = (new ItemMinecart(152, 5)).setUnlocalizedName("minecartHopper"); + + // this is a decorator for the item class so i dont have to manually find it + + //custItems + + // Register custom items + public static Item detonator = (new Detonator(153)); + + public static Item record13 = (new ItemRecord(2000, "13")).setUnlocalizedName("record"); public static Item recordCat = (new ItemRecord(2001, "cat")).setUnlocalizedName("record"); public static Item recordBlocks = (new ItemRecord(2002, "blocks")).setUnlocalizedName("record"); diff --git a/src/net/minecraft/src/SoundManager.java b/src/net/minecraft/src/SoundManager.java index f387ef0..ed3f327 100644 --- a/src/net/minecraft/src/SoundManager.java +++ b/src/net/minecraft/src/SoundManager.java @@ -12,10 +12,13 @@ import paulscode.sound.SoundSystemConfig; import paulscode.sound.codecs.CodecJOrbis; import paulscode.sound.codecs.CodecWav; import paulscode.sound.libraries.LibraryLWJGLOpenAL; +import net.minecraft.src.mml.ImplSoundLoader; + +import static net.minecraft.src.mml.ImplSoundLoader.registerSounds; public class SoundManager { private static SoundSystem sndSystem; - private SoundPool soundPoolSounds = new SoundPool(); + public SoundPool soundPoolSounds = new SoundPool(); private SoundPool soundPoolStreaming = new SoundPool(); private SoundPool soundPoolMusic = new SoundPool(); private int latestSoundID = 0; @@ -33,6 +36,8 @@ public class SoundManager { this.tryToSetLibraryAndCodecs(); } + registerSounds(this); + } private void tryToSetLibraryAndCodecs() { diff --git a/src/net/minecraft/src/World.java b/src/net/minecraft/src/World.java index 1a17483..189ae8c 100644 --- a/src/net/minecraft/src/World.java +++ b/src/net/minecraft/src/World.java @@ -1651,7 +1651,15 @@ public abstract class World implements IBlockAccess { } public Explosion createExplosion(Entity entity, double X, double Y, double Z, float Power, boolean explode) { - return this.newExplosion(entity, X, Y, Z, Power, false, explode); + return this.newExplosion(entity, X, Y, Z, Power, false, explode); + } + + public Explosion createFireyExplosion(Entity entity, double X, double Y, double Z, float Power, boolean explode) { + return this.newExplosion(entity, X, Y, Z, Power, true, explode); + } + + public Explosion createWastedExplosion(Entity entity, double X, double Y, double Z, float Power, boolean explode) { + return this.newCustomExplosion(entity, X, Y, Z, Power, false, true, false, explode); } public Explosion newExplosion(Entity var1, double var2, double var4, double var6, float var8, boolean var9, boolean var10) { @@ -1663,6 +1671,17 @@ public abstract class World implements IBlockAccess { return var11; } + public Explosion newCustomExplosion(Entity var1, double var2, double var4, double var6, float var8, boolean var9, boolean isWasting, boolean isWatering, boolean var10) { + Explosion var11 = new Explosion(this, var1, var2, var4, var6, var8); + var11.isFlaming = var9; + var11.isSmoking = var10; + var11.isWasting = isWasting; + var11.isWatering = isWatering; + var11.doExplosionA(); + var11.doExplosionB(true); + return var11; + } + public float getBlockDensity(Vec3 var1, AxisAlignedBB var2) { double var3 = 1.0D / ((var2.maxX - var2.minX) * 2.0D + 1.0D); double var5 = 1.0D / ((var2.maxY - var2.minY) * 2.0D + 1.0D); diff --git a/src/net/minecraft/src/mml/Blocks/BlockChunkDeleter.java b/src/net/minecraft/src/mml/Blocks/BlockChunkDeleter.java new file mode 100644 index 0000000..2727f98 --- /dev/null +++ b/src/net/minecraft/src/mml/Blocks/BlockChunkDeleter.java @@ -0,0 +1,46 @@ +package net.minecraft.src.mml.Blocks; + +import net.minecraft.src.*; + +public class BlockChunkDeleter extends Block { + + private Icon TextureTop; + private Icon TextureBottom; + + public BlockChunkDeleter(int BlockID) { + super(BlockID, Material.piston); + this.setCreativeTab(CreativeTabs.tabDebug); + } + + public Icon getIcon(int side, int var2) { + return side == 0 ? this.TextureBottom : (side == 1 ? this.TextureTop : this.blockIcon); + } + + @Override + public void onBlockAdded(World world, int X, int Y, int Z) { + super.onBlockAdded(world, X, Y, Z); + + int chunkStartX = (X >> 4) << 4; + int chunkStartZ = (Z >> 4) << 4; + + for (int cx = 0; cx < 16; cx++) { + for (int cz = 0; cz < 16; cz++) { + for (int cy = 0; cy < 256; cy++) { + + int targetX = chunkStartX + cx; + int targetZ = chunkStartZ + cz; + + if (cy > 0) { + world.setBlockToAir(targetX, cy, targetZ); + } + } + } + } + } + + public void registerIcons(IconRegister ir) { + this.blockIcon = ir.registerIcon("cd_side"); + this.TextureTop = ir.registerIcon("cd_top"); + this.TextureBottom = ir.registerIcon("cd_bottom"); + } +} diff --git a/src/net/minecraft/src/mml/Blocks/BlockNuke.java b/src/net/minecraft/src/mml/Blocks/BlockNuke.java index 60a6082..ff39f5e 100644 --- a/src/net/minecraft/src/mml/Blocks/BlockNuke.java +++ b/src/net/minecraft/src/mml/Blocks/BlockNuke.java @@ -1,5 +1,6 @@ package net.minecraft.src.mml.Blocks; +import net.minecraft.client.Minecraft; import net.minecraft.src.*; import net.minecraft.src.mml.Entities.EntityNukePrimed; @@ -25,8 +26,6 @@ public class BlockNuke extends Block { var1.setBlockToAir(var2, var3, var4); } - this.BlowupNuke(var1, var2, var3, var4, 1, (EntityLiving) null); - } public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { @@ -38,7 +37,7 @@ public class BlockNuke extends Block { } public int quantityDropped(Random var1) { - return 1; + return 1000; } public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4, Explosion var5) { @@ -58,14 +57,15 @@ public class BlockNuke extends Block { if((var5 & 1) == 1) { EntityNukePrimed var7 = new EntityNukePrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), var6); var1.spawnEntityInWorld(var7); - var1.playSoundAtEntity(var7, "random.fuse", 1.0F, 1.0F); + + var1.playSoundAtEntity(var7, "mod.beep", 1.0F, 1.0F); } } } public boolean onBlockActivated(World var1, int var2, int var3, int var4, EntityPlayer var5, int var6, float var7, float var8, float var9) { - if(var5.getCurrentEquippedItem() != null && var5.getCurrentEquippedItem().itemID == Item.flintAndSteel.itemID) { + if(var5.getCurrentEquippedItem() != null && var5.getCurrentEquippedItem().itemID == Item.detonator.itemID) { this.BlowupNuke(var1, var2, var3, var4, 1, var5); var1.setBlockToAir(var2, var3, var4); return true; @@ -90,8 +90,8 @@ public class BlockNuke extends Block { } public void registerIcons(IconRegister var1) { - this.blockIcon = var1.registerIcon("tnt_side"); - this.TextureTop = var1.registerIcon("tnt_top"); - this.TextureBottom = var1.registerIcon("tnt_bottom"); + this.blockIcon = var1.registerIcon("nuke_side"); + this.TextureTop = var1.registerIcon("nuke_top"); + this.TextureBottom = var1.registerIcon("nuke_bottom"); } } diff --git a/src/net/minecraft/src/mml/Entities/EntityNukePrimed.java b/src/net/minecraft/src/mml/Entities/EntityNukePrimed.java index f51585d..fec249b 100644 --- a/src/net/minecraft/src/mml/Entities/EntityNukePrimed.java +++ b/src/net/minecraft/src/mml/Entities/EntityNukePrimed.java @@ -73,8 +73,8 @@ public class EntityNukePrimed extends Entity { } private void explode() { - float explosionPower = 40.0F; - this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, explosionPower, true); + float explosionPower = 200.0F; + this.worldObj.createWastedExplosion(this, this.posX, this.posY, this.posZ, explosionPower, true); } protected void writeEntityToNBT(NBTTagCompound var1) { diff --git a/src/net/minecraft/src/mml/ImplSoundLoader.java b/src/net/minecraft/src/mml/ImplSoundLoader.java new file mode 100644 index 0000000..f47935f --- /dev/null +++ b/src/net/minecraft/src/mml/ImplSoundLoader.java @@ -0,0 +1,33 @@ +package net.minecraft.src.mml; + +import net.minecraft.client.Minecraft; +import net.minecraft.src.MinecraftAppletImpl; +import net.minecraft.src.SoundManager; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Stream; + +import java.io.File; + +public class ImplSoundLoader { + + public static void registerASound(SoundManager SM, String path, String pointer) { + File file = new File(path); + SM.soundPoolSounds.addSound(pointer, file); + } + + public static void registerSounds(SoundManager SM) { + Path path = Paths.get(MinecraftAppletImpl.getMinecraftDir() + "modsounds"); + + try (Stream stream = Files.list(path)) { + stream.filter(Files::isRegularFile) // Exclude subdirectories + .forEach(p -> registerASound(SM, p.toString(), "mod/" + p.getFileName().toString())); + } catch (IOException e) { + e.printStackTrace(); + } + + + } +} diff --git a/src/net/minecraft/src/mml/Items/Detonator.java b/src/net/minecraft/src/mml/Items/Detonator.java new file mode 100644 index 0000000..4edaea7 --- /dev/null +++ b/src/net/minecraft/src/mml/Items/Detonator.java @@ -0,0 +1,12 @@ +package net.minecraft.src.mml.Items; + +import net.minecraft.src.CreativeTabs; +import net.minecraft.src.Item; + +public class Detonator extends Item { + public Detonator(int ItemID) { + super(ItemID); + setCreativeTab(CreativeTabs.tabDebug); + setUnlocalizedName("detonator"); + } +}