added a nuke

This commit is contained in:
2026-06-18 22:59:24 -05:00
parent 0c10c9bf4e
commit 69a23ff8aa
14 changed files with 1760 additions and 41 deletions

75
.idea/workspace.xml generated
View File

@@ -1,11 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="21afa9bb-6936-4dba-b025-44007f88dd40" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/net/minecraft/src/mml/BlockLoader.java" afterDir="false" />
<list default="true" id="21afa9bb-6936-4dba-b025-44007f88dd40" name="Changes" comment="add a BlockRegister class to let rev not shoot himself trying to register blocks">
<change afterPath="$PROJECT_DIR$/src/lang/en_US_Mod.lang" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/lang/languages.txt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/net/minecraft/src/CreativeTabTest.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/net/minecraft/src/mml/Blocks/BlockNuke.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/net/minecraft/src/mml/CreativeTabs/CreativeTabDebug.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/net/minecraft/src/mml/Entities/EntityNukePrimed.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/Block.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/Block.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/CreativeTabs.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/CreativeTabs.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/GuiContainerCreative.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/GuiContainerCreative.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/Item.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/Item.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/StringTranslate.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/StringTranslate.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/World.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/World.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/net/minecraft/src/mml/BlockLoader.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/net/minecraft/src/mml/BlockLoader.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -22,33 +32,33 @@
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 0,
"fromUser": false
}]]></component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 0,
&quot;fromUser&quot;: false
}</component>
<component name="ProjectId" id="3FGqJZOP14ZXSxLwGOGtfFJIcz0" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Application.Minecraft Client.executor": "Run",
"ModuleVcsDetector.initialDetectionPerformed": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
"codeWithMe.voiceChat.enabledByDefault": "false",
"git-widget-placeholder": "main",
"kotlin-language-version-configured": "true",
"last_opened_file_path": "C:/idea/MML",
"project.structure.last.edited": "Libraries",
"project.structure.proportion": "0.0",
"project.structure.side.proportion": "0.0",
"vue.rearranger.settings.migration": "true"
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Application.Minecraft Client.executor&quot;: &quot;Run&quot;,
&quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
&quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
&quot;codeWithMe.voiceChat.enabledByDefault&quot;: &quot;false&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/idea/MML&quot;,
&quot;project.structure.last.edited&quot;: &quot;Libraries&quot;,
&quot;project.structure.proportion&quot;: &quot;0.0&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}]]></component>
}</component>
<component name="RunManager">
<configuration name="Minecraft Client" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.mcphackers.launchwrapper.Launch" />
@@ -75,11 +85,26 @@
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1781711682567</updated>
<workItem from="1781711683576" duration="1113000" />
<workItem from="1781711683576" duration="10131000" />
<workItem from="1781724230644" duration="29000" />
<workItem from="1781839713575" duration="1832000" />
</task>
<task id="LOCAL-00001" summary="add a BlockRegister class to let rev not shoot himself trying to register blocks">
<option name="closed" value="true" />
<created>1781712814228</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1781712814228</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="add a BlockRegister class to let rev not shoot himself trying to register blocks" />
<option name="LAST_COMMIT_MESSAGE" value="add a BlockRegister class to let rev not shoot himself trying to register blocks" />
</component>
</project>

1320
src/lang/en_US_Mod.lang Normal file

File diff suppressed because it is too large Load Diff

63
src/lang/languages.txt Normal file
View File

@@ -0,0 +1,63 @@
af_ZA=Afrikaans (ZA)
ar_SA=العربية (العالم العربي)
bg_BG=Български (BG)
ca_ES=Català (CAT)
cs_CZ=Čeština (CZ)
cy_GB=Cymraeg (Cymru)
da_DK=Dansk (DK)
de_DE=Deutsch (Deutschland)
el_GR=Ελληνικά (El)
en_AU=Australian English (Australia)
en_CA=Canadian English (CA)
en_GB=English (UK)
en_PT=Pirate Speak (PIRATE)
eo_UY=Esperanto (Mondo)
es_AR=Español (Argentina)
es_ES=Español (España)
es_MX=Español (México)
es_UY=Español (Uruguay)
es_VE=Español (Venezuela)
et_EE=Eesti (ET)
eu_ES=Euskara (EH)
fi_FI=suomi (FI)
fr_FR=Français (France)
fr_CA=Français (CA)
ga_IE=Gaeilge (Éire)
gl_ES=Galego (Galicia)
he_IL=אנגלית (IL)
hi_IN=अंग्रेज़ी (भारत)
hr_HR=Hrvatski (HR)
hu_HU=Magyar (HU)
id_ID=Bahasa Indonesia (ID)
is_IS=Íslenska (IS)
it_IT=Italiano (Italia)
ja_JP=日本語 (日本)
ka_GE=ქართული (საქართველო)
ko_KR=한국어 (KR)
kw_GB=Kernowek (Cornwall)
lt_LT=Lietuvių (Lietuva)
lv_LV=Latviešu (Latvija)
ms_MY=Bahasa Melayu (MS)
mt_MT=Malti (MT)
nl_NL=Nederlands (Nederland)
nn_NO=Norsk nynorsk (Noreg)
no_NO=Norsk (NO)
pl_PL=Polski (Polska)
pt_BR=Português (BR)
pt_PT=Português (Portugal)
qya_AA=Quenya (Arda)
ro_RO=Română (RO)
ru_RU=Русский (Россия)
sk_SK=Slovenčina (SK)
sl_SI=Slovenščina (SLO)
sr_SP=Српски (Србија)
sv_SE=Svenska (Sverige)
th_TH=ภาษาไทย (TH)
tlh_AA=tlhIngan Hol (US)
tr_TR=Türkçe (TR)
uk_UA=Українська (Україна)
vi_VN=Tiếng Việt (VN)
zh_CN=简体中文 (中国)
zh_TW=繁體中文 (台灣)
en_US_Mod=English (US) (MML Modded LangFile)

View File

@@ -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.BlockNuke;
public class Block {
private CreativeTabs displayOnCreativeTab;
@@ -185,6 +186,9 @@ public class Block {
public static BlockLoader Loader = new BlockLoader();
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 final int blockID;
protected float blockHardness;

View File

@@ -0,0 +1,11 @@
package net.minecraft.src;
final class CreativeTabTest extends CreativeTabs {
CreativeTabTest(int var1, String var2) {
super(var1, var2);
}
public int getTabIconItemIndex() {
return Block.brick.blockID;
}
}

View File

@@ -1,9 +1,12 @@
package net.minecraft.src;
import net.minecraft.src.mml.CreativeTabs.CreativeTabDebug;
import java.util.List;
public class CreativeTabs {
public static final CreativeTabs[] creativeTabArray = new CreativeTabs[12];
public static final CreativeTabs[] creativeTabArray = new CreativeTabs[13];
public static final CreativeTabs tabBlock = new CreativeTabBlock(0, "buildingBlocks");
public static final CreativeTabs tabDecorations = new CreativeTabDeco(1, "decorations");
public static final CreativeTabs tabRedstone = new CreativeTabRedstone(2, "redstone");
@@ -16,6 +19,8 @@ public class CreativeTabs {
public static final CreativeTabs tabBrewing = new CreativeTabBrewing(9, "brewing");
public static final CreativeTabs tabMaterials = new CreativeTabMaterial(10, "materials");
public static final CreativeTabs tabInventory = (new CreativeTabInventory(11, "inventory")).setBackgroundImageName("survival_inv.png").setNoScrollbar().setNoTitle();
public static final CreativeTabs tabDebug = new CreativeTabDebug(12, "debug");
private final int tabIndex;
private final String tabLabel;
private String backgroundImageName = "list_items.png";
@@ -76,21 +81,35 @@ public class CreativeTabs {
}
public int getTabColumn() {
if (tabIndex > 11) {
return((tabIndex -12) % 10) % 5;
}
return this.tabIndex % 6;
}
public boolean isTabInFirstRow() {
if (tabIndex > 11) {
return((tabIndex -12) % 10) < 5;
}
return this.tabIndex < 6;
}
public void displayAllReleventItems(List var1) {
Item[] var2 = Item.itemsList;
int var3 = var2.length;
for(int var4 = 0; var4 < var3; ++var4) {
for (int var4 = 0; var4 < var3; ++var4) {
Item var5 = var2[var4];
if(var5 != null && var5.getCreativeTab() == this) {
var5.getSubItems(var5.itemID, this, var1);
if (var5 == null) {
continue;
}
for (CreativeTabs tab : var5.getCreativeTabs()) {
if (tab == this) {
var5.getSubItems(var5.itemID, this, var1);
}
}
}
@@ -118,4 +137,19 @@ public class CreativeTabs {
}
}
public int getTabPage() {
if (tabIndex > 11) {
return ((tabIndex - 12) / 10 ) + 1;
}
return 0;
}
public static int getNextID(){
return creativeTabArray.length;
}
public ItemStack getIconItemStack() {
return new ItemStack(getTabIconItem());
}
}

View File

@@ -20,6 +20,9 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
private boolean field_74234_w = false;
private CreativeCrafting field_82324_x;
private static int currentPage = 0;
private int maxPages = ((CreativeTabs.creativeTabArray.length - 12) / 10) + 1;
public GuiContainerCreative(EntityPlayer var1) {
super(new ContainerCreative(var1));
var1.openContainer = this.inventorySlots;
@@ -172,6 +175,13 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
this.setCurrentCreativeTab(CreativeTabs.creativeTabArray[var1]);
this.field_82324_x = new CreativeCrafting(this.mc);
this.mc.thePlayer.inventoryContainer.addCraftingToCrafters(this.field_82324_x);
if (maxPages > 0) {
// Button ID 101 for Previous, Button ID 102 for Next
this.buttonList.add(new GuiButton(101, this.guiLeft, this.guiTop - 50, 20, 20, "<"));
this.buttonList.add(new GuiButton(102, this.guiLeft + this.xSize - 20, this.guiTop - 50, 20, 20, ">"));
}
} else {
this.mc.displayGuiScreen(new GuiInventory(this.mc.thePlayer));
}
@@ -278,6 +288,13 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
for(int var8 = 0; var8 < var7; ++var8) {
CreativeTabs var9 = var6[var8];
if (var9 == null) continue; // Safety check
// FILTER: Ignore clicks on tabs that aren't on the current page
if (var9.getTabPage() != currentPage) {
continue;
}
if(this.func_74232_a(var9, var4, var5)) {
return;
}
@@ -441,12 +458,20 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
for(int var13 = 0; var13 < var12; ++var13) {
CreativeTabs var14 = var11[var13];
if (var14 == null) continue; // Safety check
// FILTER: Skip checking hover text if the tab isn't on the active page
if (var14.getTabPage() != currentPage) {
continue;
}
if(this.renderCreativeInventoryHoveringText(var14, var1, var2)) {
break;
}
}
if(this.field_74235_v != null && selectedTabIndex == CreativeTabs.tabInventory.getTabIndex() && this.isPointInRegion(this.field_74235_v.xDisplayPosition, this.field_74235_v.yDisplayPosition, 16, 16, var1, var2)) {
// FILTER: Only show the survival inventory bin slot tooltip if the survival tab is on the active page
if(this.field_74235_v != null && selectedTabIndex == CreativeTabs.tabInventory.getTabIndex() && CreativeTabs.tabInventory.getTabPage() == currentPage && this.isPointInRegion(this.field_74235_v.xDisplayPosition, this.field_74235_v.yDisplayPosition, 16, 16, var1, var2)) {
this.drawCreativeTabHoveringText(StringTranslate.getInstance().translateKey("inventory.binSlot"), var1, var2);
}
@@ -464,12 +489,20 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
int var7;
for(var7 = 0; var7 < var6; ++var7) {
CreativeTabs var8 = var5[var7];
if (var8 == null) continue; // Safety check for null tabs
// FILTER: Only draw the background tab if it's on the current page
if (var8.getTabPage() != currentPage) {
continue;
}
this.mc.renderEngine.bindTexture("/gui/allitems.png");
if(var8.getTabIndex() != selectedTabIndex) {
this.renderCreativeTab(var8);
}
}
// Draw the main large inventory background texture
this.mc.renderEngine.bindTexture("/gui/creative_inv/" + var4.getBackgroundImageName());
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
this.searchField.drawTextBox();
@@ -482,14 +515,24 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
this.drawTexturedModalRect(var9, var6 + (int)((float)(var7 - var6 - 17) * this.currentScroll), 232 + (this.needsScrollBars() ? 0 : 12), 0, 12, 15);
}
this.renderCreativeTab(var4);
if(var4 == CreativeTabs.tabInventory) {
GuiInventory.drawPlayerOnGui(this.mc, this.guiLeft + 43, this.guiTop + 45, 20, (float)(this.guiLeft + 43 - var2), (float)(this.guiTop + 45 - 30 - var3));
// FILTER: Only draw the foreground/selected tab if it's on the current page
if (var4.getTabPage() == currentPage) {
this.renderCreativeTab(var4);
}
if(var4 == CreativeTabs.tabInventory && var4.getTabPage() == currentPage) {
GuiInventory.drawPlayerOnGui(this.mc, this.guiLeft + 43, this.guiTop + 45, 20, (float)(this.guiLeft + 43 - var2), (float)(this.guiTop + 45 - 30 - var3));
}
}
protected boolean func_74232_a(CreativeTabs var1, int var2, int var3) {
if (var1 == null) return false;
// FILTER: If the tab isn't on the active page, its bounding box shouldn't exist
if (var1.getTabPage() != currentPage) {
return false;
}
int var4 = var1.getTabColumn();
int var5 = 28 * var4;
byte var6 = 0;
@@ -585,6 +628,17 @@ public class GuiContainerCreative extends InventoryEffectRenderer {
this.mc.displayGuiScreen(new GuiStats(this, this.mc.statFileWriter));
}
if (var1.id == 101) { // Previous Page
if (currentPage > 0) {
currentPage--;
}
} else if (var1.id == 102) { // Next Page
if (currentPage < maxPages) {
currentPage++;
}
}
super.actionPerformed(var1);
}
public int func_74230_h() {

View File

@@ -292,6 +292,10 @@ public class Item {
return this;
}
public CreativeTabs[] getCreativeTabs() {
return new CreativeTabs[]{getCreativeTab()};
}
public String getLocalizedName(ItemStack var1) {
String var2 = this.getUnlocalizedName(var1);
return var2 == null ? "" : StatCollector.translateToLocal(var2);

View File

@@ -14,7 +14,7 @@ public class StringTranslate {
private static StringTranslate instance = new StringTranslate("en_US");
private Properties translateTable = new Properties();
private TreeMap languageList;
private TreeMap field_94521_d = new TreeMap();
private TreeMap VarTreeMap = new TreeMap();
private String currentLanguage;
private boolean isUnicode;
@@ -54,8 +54,8 @@ public class StringTranslate {
private void loadLanguage(Properties var1, String var2) throws IOException {
BufferedReader var3 = null;
if(this.field_94521_d.containsKey(var2)) {
var3 = new BufferedReader(new FileReader((File)this.field_94521_d.get(var2)));
if(this.VarTreeMap.containsKey(var2)) {
var3 = new BufferedReader(new FileReader((File)this.VarTreeMap.get(var2)));
} else {
var3 = new BufferedReader(new InputStreamReader(StringTranslate.class.getResourceAsStream("/lang/" + var2 + ".lang"), "UTF-8"));
}
@@ -161,7 +161,7 @@ public class StringTranslate {
var1 = var1.substring(0, var3);
}
this.field_94521_d.put(var1, var2);
this.VarTreeMap.put(var1, var2);
if(var1.contains(this.currentLanguage)) {
this.setLanguage(this.currentLanguage, true);
}

View File

@@ -1650,8 +1650,8 @@ public abstract class World implements IBlockAccess {
return false;
}
public Explosion createExplosion(Entity var1, double var2, double var4, double var6, float var8, boolean var9) {
return this.newExplosion(var1, var2, var4, var6, var8, false, var9);
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);
}
public Explosion newExplosion(Entity var1, double var2, double var4, double var6, float var8, boolean var9, boolean var10) {

View File

@@ -5,9 +5,9 @@ import net.minecraft.src.CreativeTabs;
import net.minecraft.src.Material;
public class BlockLoader {
public Block registerBlock(int BlockID, Material material, String unlocalizedName) {
public Block registerBlock(int BlockID, Material material, String unlocalizedName, CreativeTabs creativeTab) {
Block InternalBlock = (new Block(BlockID, material));
InternalBlock.setCreativeTab(CreativeTabs.tabBlock);
InternalBlock.setCreativeTab(creativeTab);
InternalBlock.setUnlocalizedName(unlocalizedName);
return InternalBlock;
}

View File

@@ -0,0 +1,97 @@
package net.minecraft.src.mml.Blocks;
import net.minecraft.src.*;
import net.minecraft.src.mml.Entities.EntityNukePrimed;
import java.util.Random;
public class BlockNuke extends Block {
private Icon TextureTop;
private Icon TextureBottom;
public BlockNuke(int BlockID) {
super(BlockID, Material.tnt);
this.setCreativeTab(CreativeTabs.tabDebug);
}
public Icon getIcon(int side, int var2) {
return side == 0 ? this.TextureBottom : (side == 1 ? this.TextureTop : this.blockIcon);
}
public void onBlockAdded(World var1, int var2, int var3, int var4) {
super.onBlockAdded(var1, var2, var3, var4);
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) {
this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
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) {
if(var1.isBlockIndirectlyGettingPowered(var2, var3, var4)) {
this.onBlockDestroyedByPlayer(var1, var2, var3, var4, 1);
var1.setBlockToAir(var2, var3, var4);
}
}
public int quantityDropped(Random var1) {
return 1;
}
public void onBlockDestroyedByExplosion(World var1, int var2, int var3, int var4, Explosion var5) {
if(!var1.isRemote) {
EntityNukePrimed NukeEntity = new EntityNukePrimed(var1, (double)((float)var2 + 0.5F), (double)((float)var3 + 0.5F), (double)((float)var4 + 0.5F), var5.func_94613_c());
NukeEntity.fuse = 0;
var1.spawnEntityInWorld(NukeEntity);
}
}
public void onBlockDestroyedByPlayer(World var1, int var2, int var3, int var4, int var5) {
this.BlowupNuke(var1, var2, var3, var4, var5, (EntityLiving)null);
}
public void BlowupNuke(World var1, int var2, int var3, int var4, int var5, EntityLiving var6) {
if(!var1.isRemote) {
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);
}
}
}
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) {
this.BlowupNuke(var1, var2, var3, var4, 1, var5);
var1.setBlockToAir(var2, var3, var4);
return true;
} else {
return super.onBlockActivated(var1, var2, var3, var4, var5, var6, var7, var8, var9);
}
}
public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) {
if(var5 instanceof EntityArrow && !var1.isRemote) {
EntityArrow var6 = (EntityArrow)var5;
if(var6.isBurning()) {
this.BlowupNuke(var1, var2, var3, var4, 1, var6.shootingEntity instanceof EntityLiving ? (EntityLiving)var6.shootingEntity : null);
var1.setBlockToAir(var2, var3, var4);
}
}
}
public boolean canDropFromExplosion(Explosion var1) {
return false;
}
public void registerIcons(IconRegister var1) {
this.blockIcon = var1.registerIcon("tnt_side");
this.TextureTop = var1.registerIcon("tnt_top");
this.TextureBottom = var1.registerIcon("tnt_bottom");
}
}

View File

@@ -0,0 +1,14 @@
package net.minecraft.src.mml.CreativeTabs;
import net.minecraft.src.Block;
import net.minecraft.src.CreativeTabs;
public final class CreativeTabDebug extends CreativeTabs {
public CreativeTabDebug(int var1, String var2) {
super(var1, var2);
}
public int getTabIconItemIndex() {
return Block.test.blockID;
}
}

View File

@@ -0,0 +1,93 @@
package net.minecraft.src.mml.Entities;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityLiving;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.World;
public class EntityNukePrimed extends Entity {
private EntityLiving tntPlacedBy;
public int fuse;
public EntityNukePrimed(World gameWorld) {
super(gameWorld);
this.preventEntitySpawning = true;
this.setSize(0.98F, 0.98F);
this.yOffset = this.height / 2.0F;
}
public EntityNukePrimed(World gameWorld, double X, double Y, double Z, EntityLiving entityLiving) {
this(gameWorld);
this.setPosition(X, Y, Z);
float var9 = (float)(Math.random() * (double)((float)Math.PI) * 2.0D);
this.motionX = (double)(-((float)Math.sin((double)var9)) * 0.02F);
this.motionY = (double)0.2F;
this.motionZ = (double)(-((float)Math.cos((double)var9)) * 0.02F);
this.prevPosX = X;
this.prevPosY = Y;
this.prevPosZ = Z;
this.tntPlacedBy = entityLiving;
this.fuse = 200;
}
protected void entityInit() {
}
protected boolean canTriggerWalking() {
return false;
}
public boolean canBeCollidedWith() {
return !this.isDead;
}
public void onUpdate() {
this.prevPosX = this.posX; // get the position and set it
this.prevPosY = this.posY;
this.prevPosZ = this.posZ;
this.moveEntity(this.motionX, this.motionY, this.motionZ);
this.motionX *= (double)0.98F;
this.motionY *= (double)0.98F;
this.motionZ *= (double)0.98F;
if (this.onGround) {
this.motionX *= (double)0.7F;
this.motionZ *= (double)0.7F;
this.motionY *= -0.5D;
}
if (this.fuse-- <= 0) {
this.setDead();
if (!this.worldObj.isRemote) {
this.explode();
} else {
this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ , 0.0D, 0.0D, 0.0D);
}
}
}
private void explode() {
float explosionPower = 40.0F;
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, explosionPower, true);
}
protected void writeEntityToNBT(NBTTagCompound var1) {
}
protected void readEntityFromNBT(NBTTagCompound var1) {
}
public float getShadowSize() {
return 0.0F;
}
public EntityLiving getTntPlacedBy() {
return this.tntPlacedBy;
}
}