整地TNTを作りたい

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.38873)

整地TNTを作りたい

投稿記事by ゲスト » 2012年5月16日(水) 19:44

TNTを設置すると地面まで削れてしまいますよね?

広範囲に設置した場所より上のブロックをすべて破壊するTNTを作りたいのですが・・

昨日javaを少々勉強しながら,MOD制作環境を整えたばっかで

いざ作ろうとして何の機能もないBlockがつくれるようになったばかり・・・

動画などをたくさんみたのですが

全然わからず

TNTのここはどういう役目でどこからどういう風になどを教えていただけると嬉しいです。

あとpar2,par3などの変数などはどういった役割をもっているんですか?
ゲスト
ID:70743d1d
 

  • (PostNo.38893)

Re: 整地TNTを作りたい

投稿記事by みどりぃ » 2012年5月16日(水) 21:12

ゲスト さんが書きました:TNTを設置すると地面まで削れてしまいますよね?

広範囲に設置した場所より上のブロックをすべて破壊するTNTを作りたいのですが・・

昨日javaを少々勉強しながら,MOD制作環境を整えたばっかで

いざ作ろうとして何の機能もないBlockがつくれるようになったばかり・・・

動画などをたくさんみたのですが

全然わからず

TNTのここはどういう役目でどこからどういう風になどを教えていただけると嬉しいです。

あとpar2,par3などの変数などはどういった役割をもっているんですか?


他のMODをデコンパイルするなりして自力で何とかしてください。
ここがどうなってるのかわからない!こうやりたいのにうまく動かない!なら答えようがありますが、TNTの記述はどうなっているのか1から全部教えろっていっても答えてくれる人はいませんよ。
正直に申しますと自分もわからないんですけどね。とにかく他人を頼る前に自分で試行錯誤しましょう。
みどりぃ
ID:ace4c4c4
石掘り
 
記事: 115
登録日時: 2011年11月03日(木) 06:57

  • (PostNo.38974)

Re: 整地TNTを作りたい

投稿記事by ゲスト » 2012年5月17日(木) 04:03

上記の方すいません ご忠告ありがとうございます

現在ようやくEntityTNPrimedにTNTの破壊力などがのっていることがわかり,色々データをいじくったりして調べているのですが
爆発のダメージはコメントでここと書いてあるところで調整できることはわかったのですが
爆発のエリアをかえることがわからず困っています。

高さを一定にしたり
範囲(XY)を固定したりなどはどのへんをいじくればいいのでしょうか?


package net.minecraft.src;

public class EntityTTNTPrimed extends Entity
{
/** How long the fuse is */
public int fuse;

public EntityTTNTPrimed(World par1World)
{
super(par1World);
fuse = 0;
preventEntitySpawning = true;
setSize(0.98F, 0.98F);
yOffset = height / 2.0F;
}

public EntityTTNTPrimed(World par1World, double par2, double par4, double par6)
{
this(par1World);
setPosition(par2, par4, par6);
float f = (float)(Math.random() * Math.PI * 2D);
motionX = -(float)Math.sin(f) * 0.02F;
motionY = 0.20000000298023224D;
motionZ = -(float)Math.cos(f) * 0.02F;
fuse = 80;
prevPosX = par2;
prevPosY = par4;
prevPosZ = par6;
}

protected void entityInit()
{
}

/**
* returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
* prevent them from trampling crops
*/
protected boolean canTriggerWalking()
{
return false;
}

/**
* Returns true if other Entities should be prevented from moving through this Entity.
*/
public boolean canBeCollidedWith()
{
return !isDead;
}

/**
* Called to update the entity's position/logic.
*/
public void onUpdate()
{
prevPosX = posX;
prevPosY = posY;
prevPosZ = posZ;
motionY -= 0.039999999105930328D;
moveEntity(motionX, motionY, motionZ);
motionX *= 0.98000001907348633D;
motionY *= 0.98000001907348633D;
motionZ *= 0.98000001907348633D;

if (onGround)
{
motionX *= 0.69999998807907104D;
motionZ *= 0.69999998807907104D;
motionY *= -0.5D;
}

if (fuse-- <= 0)
{
if (!worldObj.isRemote)
{
setDead();
explode();
}
else
{
setDead();
}
}
else
{
worldObj.spawnParticle("smoke", posX, posY + 0.5D, posZ, 0.0D, 0.0D, 0.0D);
}
}

private void explode()
{
float f = 40F;      //ここ
worldObj.createExplosion(null, posX, posY, posZ, f);
}

/**
* (abstract) Protected helper method to write subclass entity data to NBT.
*/
protected void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
{
par1NBTTagCompound.setByte("Fuse", (byte)fuse);
}

/**
* (abstract) Protected helper method to read subclass entity data from NBT.
*/
protected void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
{
fuse = par1NBTTagCompound.getByte("Fuse");
}

public float getShadowSize()
{
return 0.0F;
}
}
ゲスト
ID:70743d1d
 

  • (PostNo.39283)

Re: 整地TNTを作りたい

投稿記事by SpringMine » 2012年5月19日(土) 11:44

爆発の威力を変えても、標準の爆発を作る命令を呼び出しているだけなので、標準の爆発と同じことしか出来ません。
ですから、今回のように指定範囲のブロックに限定して何かするようなことは自分で処理を作るしかないと思います。
SpringMine
ID:7bacda2c
石炭掘り
 
記事: 177
登録日時: 2011年12月07日(水) 22:14


Return to 質問:開発・制作関連

x