【総合】トピック立てるまでもない質問【Mod制作】

フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999

返信する

CAPTCHA 認証コード
表示されたコードを正確に入力してください。各文字は大文字・小文字の区別があります。

BBCode: OFF
スマイリー: OFF
トピックのレビュー
   

ファイルを添付します

展開ビュー トピックのレビュー: 【総合】トピック立てるまでもない質問【Mod制作】

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by 通りすがり(滞在中) » 2018年11月09日(金) 03:16

返信ありがとうございます。

1.変数、型
2.演算子
3.if文、for文、while文
4.配列
5.メソッド
6.クラス、継承
7.抽象クラス、インターフェイス
8.例外処理

スッキリわかるJava入門ですね。
書籍については、買う事を前提としていましたが、図書館という選択肢を完全に忘れてました。ありがとうございます。


今後についてですが、とりあえずはJavaの上記の内容を学んだ上で登録をするなり単発で質問をさせてもらうなりの方法を考えたいと思います。
登録するだけ登録して、Java途中であきらめました、じゃ話にならないので

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by spuash918 » 2018年11月08日(木) 00:13

通りすがり(滞在中) さんが書きました:初めまして。多分、MOD作成中の質問等をするのがここの掲示板の趣旨だという事はわかっているのですがあえて質問をさせてください。
また、質問する場所が違うのであれば誘導等をしていただけるとありがたいと考えています。

やりたい事
●全くの知識無しからのMOD作成

ゴール
①銃(散弾銃)の作成(エンチャ出来る物)
②バリア発生装置の作成(可能であれば工業系のMODとの連携)
③自動迎撃装置の作成(いわゆるセントリーガン)
④飛行装置の作成。
⑤村人の取引の追加(村人にナニカする系のMODに対応させたいので、あくまで村人にしたい)
上記をとりあえず、マインクラフト1.6.4で実装できるようにしたい。


質問事項
プログラムとかの知識が全くないのですが、上記の物を作るにはどういった事を学び、どういった作業をすればよいのでしょうか?
教えてください。
たとえば、Javaの基礎が必要とありますが、どの程度の所までを指しているのでしょうか?

あと、もしよければお勧めの書籍等があったら教えてください

「全くの知識無しからのMOD作成」・・・知識なしでしたら長い道のりになりますが、根気があれば必ず作れますので頑張ってください

ゴールを勝手に簡単順に並び替えたのでよろしければ参考になさってください
1.村人の取引追加
2.銃
3.バリア発生装置(周囲にブロック等を設置するものと仮定してます 防具系でしたらもっと簡単です)
4.自動迎撃装置
5.飛行装置(MCHeli等の乗れるものを仮定してます)


Javaの知識についてですが、MODの作成においてJavaがマスターできていれば良いというわけではありません
マインクラフト自体の処理などについてよく理解する必要があります
しかし、大体欲しい情報はネット上に出回っているので調べればわかることが多いです(日本語では載っていないものもあるので英語力があるとなお良いです Google翻訳でもある程度理解はできるので英語無理なら翻訳かけてみてください)ので詰まったら調べてみてください

話題を戻しまして、Javaの基礎知識です
1.変数、型
2.演算子
3.if文、for文、while文
4.配列
5.メソッド
6.クラス、継承
7.抽象クラス、インターフェイス
8.例外処理
以上が思いつく内容ですね 順番は簡単なものからソートしています
量が多いように見えますが順に勉強していけば大丈夫です

書籍は「スッキリわかるJava入門」という書籍がオススメです(Amazonの商品ページ
私は上記の書籍を図書館で借りて勉強しましたが、購入したほうが良いです
メルカリなどで安く転売されているケースもあるのでそちらも見てみてください

オススメの勉強方法ですが、紙に書くのではなく実際にプログラムを組みながら勉強することを強くおすすめします
実際に動かしながらの勉強は楽しいので

もし今後も当フォーラムを利用されるのでしたらユーザー登録をおすすめします 新しい返信が来た際にメールにて通知が送られてくるのでチェックの漏れがなくなります

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by 通りすがり(滞在中) » 2018年11月07日(水) 22:16

初めまして。多分、MOD作成中の質問等をするのがここの掲示板の趣旨だという事はわかっているのですがあえて質問をさせてください。
また、質問する場所が違うのであれば誘導等をしていただけるとありがたいと考えています。

やりたい事
●全くの知識無しからのMOD作成

ゴール
①銃(散弾銃)の作成(エンチャ出来る物)
②バリア発生装置の作成(可能であれば工業系のMODとの連携)
③自動迎撃装置の作成(いわゆるセントリーガン)
④飛行装置の作成。
⑤村人の取引の追加(村人にナニカする系のMODに対応させたいので、あくまで村人にしたい)
上記をとりあえず、マインクラフト1.6.4で実装できるようにしたい。


質問事項
プログラムとかの知識が全くないのですが、上記の物を作るにはどういった事を学び、どういった作業をすればよいのでしょうか?
教えてください。
たとえば、Javaの基礎が必要とありますが、どの程度の所までを指しているのでしょうか?

あと、もしよければお勧めの書籍等があったら教えてください

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Ender Colossus » 2018年11月03日(土) 18:06

飛行するMOBを作ろうとしています。しかし、MOBを飛ばすところだけわかりません。どのようなコードを使えばよいですか。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ペコリン » 2018年10月15日(月) 21:23

Asphere さんが書きました:できました!ありがとうございます!
追加質問ですが、なにかしらの行動をした時耐久値を減少させるにはどのような文を打てばいいのでしょうか。


まずは自分でクラスやメソッドのコードを読みましょう。
今回のケースではItemToolクラスのhitEntityメソッドやonBlockDestroyedメソッドが参考になるでしょう。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Asphere » 2018年10月15日(月) 20:48

できました!ありがとうございます!
追加質問ですが、なにかしらの行動をした時耐久値を減少させるにはどのような文を打てばいいのでしょうか。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ペコリン » 2018年10月15日(月) 19:52

Asphere さんが書きました:ver1.12.2です。
新しいアイテムを作製しているのですが、addInformationでスタック数に応じて数値を入力させたいと思っていますが、スタック数の会得方法がわかりません。
よろしくおねがいします。


addInformationメソッドの第1引数のItemStackを利用し、ItemStack.getCount()でスタック数を取得します。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Asphere » 2018年10月15日(月) 18:44

ver1.12.2です。
新しいアイテムを作製しているのですが、addInformationでスタック数に応じて数値を入力させたいと思っていますが、スタック数の会得方法がわかりません。
よろしくおねがいします。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ペコリン » 2018年10月07日(日) 16:44

Ender Colossus さんが書きました:MODを作っているのですが 
コード: 全て選択
package mod.ultimate;

import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.World;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.DamageSource;
import net.minecraft.potion.PotionEffect;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.init.Items;
import net.minecraft.init.Blocks;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityGolem;
import net.minecraft.entity.monster.EntityGhast;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIEntityLargeFireballAttack;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.IRangedAttackMob;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.Entity;
import net.minecraft.client.renderer.entity.RenderSnowball;
import net.minecraft.client.renderer.entity.RenderBiped;
import net.minecraft.client.model.ModelBiped;

import java.util.Random;

import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.client.registry.RenderingRegistry;

@SuppressWarnings("unchecked")
public class mcreator_jumpingArcher {

   public static int mobid = 0;
   public Object instance;

   public void load() {
   }

   public void generateNether(World world, Random random, int chunkX, int chunkZ) {
   }

   public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
   }

   public int addFuel(ItemStack fuel) {
      return 0;
   }

   @SideOnly(Side.CLIENT)
   public void registerRenderers() {
      RenderingRegistry.registerEntityRenderingHandler(mcreator_jumpingArcher.EntityjumpingArcher.class, new RenderBiped(new ModelBiped(), 0) {
         protected ResourceLocation getEntityTexture(Entity par1Entity) {
            return new ResourceLocation("NewSkinGhast.png");
         }
      });
      RenderingRegistry.registerEntityRenderingHandler(EntityLargeFireballCustom.class,
            new RenderSnowball(new ItemStack(mcreator_bigSword.block).getItem()));

   }

   public void serverLoad(FMLServerStartingEvent event) {
   }

   public void preInit(FMLPreInitializationEvent event) {
      int entityID = EntityRegistry.findGlobalUniqueEntityId();
      mobid = entityID;
      EntityRegistry.registerGlobalEntityID(mcreator_jumpingArcher.EntityjumpingArcher.class, "jumpingArcher", entityID);
      EntityRegistry.registerModEntity(mcreator_jumpingArcher.EntityjumpingArcher.class, "jumpingArcher", entityID, instance, 64, 1, true);
      EntityList.entityEggs.put(Integer.valueOf(entityID), new EntityList.EntityEggInfo(entityID, (255 << 16) + (255 << 8) + 255, (255 << 16)
            + (255 << 8) + 255));
      EntityRegistry.addSpawn(mcreator_jumpingArcher.EntityjumpingArcher.class, 20, 3, 30, EnumCreatureType.monster, new BiomeGenBase[]{
            BiomeGenBase.ocean, BiomeGenBase.plains, BiomeGenBase.desert, BiomeGenBase.extremeHills, BiomeGenBase.forest, BiomeGenBase.taiga,
            BiomeGenBase.swampland, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.icePlains,
            BiomeGenBase.iceMountains, BiomeGenBase.mushroomIsland, BiomeGenBase.mushroomIslandShore, BiomeGenBase.beach,
            BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.taigaHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle,
            BiomeGenBase.jungleHills, BiomeGenBase.jungleEdge, BiomeGenBase.deepOcean, BiomeGenBase.stoneBeach, BiomeGenBase.coldBeach,
            BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, BiomeGenBase.roofedForest, BiomeGenBase.coldTaiga,
            BiomeGenBase.coldTaigaHills, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, BiomeGenBase.extremeHillsPlus,
            BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, BiomeGenBase.mesa, BiomeGenBase.mesaPlateau_F, BiomeGenBase.mesaPlateau});

      int entityID2 = EntityRegistry.findGlobalUniqueEntityId();
      EntityRegistry.registerModEntity(EntityLargeFireballCustom.class, "entityBulletjumpingArcher", entityID2, instance, 64, 1, true);

   }

   /*
    * public Entity spawnEntity(int var1, World var2, double var3, double var5,
    * double var7) { if(var1==mobid) return new
    * mcreator_jumpingArcher.EntityjumpingArcher(var2); else return null; }
    */

   public static class EntityLargeFireballCustom extends EntityLargeFireball {
      public EntityLargeFireballCustom(World a) {
         super(a);
            }
         
      public EntityLargeFireball(World worldIn, EntityLivingBase shooter, float c) {
               super(worldIn, shooter, c);
          }
     }

   public static class EntityjumpingArcher extends EntityMob implements IRangedAttackMob {
      World world = null;

      public EntityjumpingArcher(World var1) {
         super(var1);
         world = var1;
         experienceValue = 5;
         this.isImmuneToFire = false;
         addRandomArmor();
         this.tasks.addTask(0, new EntityAISwimming(this));
         this.tasks.addTask(6, new EntityAIWander(this, 1.0D));
         this.tasks.addTask(8, new EntityAILookIdle(this));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(10, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityGolem.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, mcreator_skull.Entityskull.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, mcreator_witherSkullboss.EntitywitherSkullboss.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, mcreator_titan.Entitytitan.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, mcreator_squidArcher.EntitysquidArcher.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityGhast.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(10, new EntityAIAttackOnCollide(this, EntityGolem.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, mcreator_skull.Entityskull.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, mcreator_witherSkullboss.EntitywitherSkullboss.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, mcreator_titan.Entitytitan.class, 1.0D, false));
         this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, mcreator_jumpingArcher.EntityjumpingArcher.class, 2, true));
         this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, mcreator_jumpingArcher.EntityjumpingArcher.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAILargeFireballAttack(this, 1.0D, 20, 60, 15.0F));

      }

      protected void applyEntityAttributes() {
         super.applyEntityAttributes();
         this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D);
         this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1500D);
         if (this.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null)
            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(3D);
      }

      protected void addRandomArmor() {

         this.setCurrentItemOrArmor(0, new ItemStack(Items.bow));
      }

      @Override
      public void attackEntityWithRangedAttack(EntityLivingBase target, float flval) {
         EntityLargeFireballCustom entitylargefireball = new EntityLargeFireballCustom(this.worldObj, this, 2.0f);
         this.worldObj.spawnEntityInWorld(entitylargefireball);
      }

      public boolean isAIEnabled() {
         return true;
      }

      @Override
      protected Item getDropItem() {
         return new ItemStack(Items.arrow).getItem();
      }

      /**
       * Returns the sound this mob makes while it's alive.
       */
      protected String getLivingSound() {
         return "";
      }

      /**
       * Returns the sound this mob makes when it is hurt.
       */
      protected String getHurtSound() {
         return "";
      }

      /**
       * Returns the sound this mob makes on death.
       */
      protected String getDeathSound() {
         return "";
      }

      public void onStruckByLightning(EntityLightningBolt entityLightningBolt) {
         super.onStruckByLightning(entityLightningBolt);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            world.setBlock(i, j, k, Blocks.iron_bars, 0, 2);
         }

      }

      protected void fall(float l) {
         super.fall(l);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         super.fall(l);
         Entity entity = this;

         if (true) {
            EntityArrow entityarrow = new EntityArrow(world, (EntityLivingBase) entity, 2 * 2.0F);
            entityarrow.setDamage(2 * 2.0F);
            entityarrow.setKnockbackStrength(1);
            world.playSoundAtEntity(entity, "random.bow", 1.0F, 1.0F / (0.5F * 0.4F + 1.2F) + 2 * 0.5F);
            if (!world.isRemote)
               world.spawnEntityInWorld(entityarrow);
         }

         if (true) {
            if (entity instanceof EntityLivingBase)
               ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(10, 100000, 250));
         }

      }

      public void onDeath(DamageSource dsource) {
         super.onDeath(dsource);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            EntityItem var14 = new EntityItem(world, (double) (i), (double) (j), (double) (k), new ItemStack(Items.arrow, 1, 0));
            var14.delayBeforeCanPickup = 10;
            world.spawnEntityInWorld(var14);
         }

      }

      public void onKillEntity(EntityLiving entityLiving) {
         super.onKillEntity(entityLiving);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            EntityArrow entityarrow = new EntityArrow(world, (EntityLivingBase) entity, 1 * 2.0F);
            entityarrow.setDamage(1 * 2.0F);
            entityarrow.setKnockbackStrength(1);
            world.playSoundAtEntity(entity, "random.bow", 1.0F, 1.0F / (0.5F * 0.4F + 1.2F) + 1 * 0.5F);
            if (!world.isRemote)
               world.spawnEntityInWorld(entityarrow);
         }

      }

      public boolean interact(EntityPlayer entity) {
         super.interact(entity);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;

         return true;
      }

      public String getEntityName() {
         return "jumpingArcher";
      }

   }

}

上のコードの
コード: 全て選択
      public EntityLargeFireball(World worldIn, EntityLivingBase shooter, float c) {
               super(worldIn, shooter, c);
          }
     }

ここの部分が「戻り値の型が必要」と出ます。
調べて,やってもエラーが出ました。
どうすればいいですか。


何をどう知らべて、何をやり、どのようなエラーが出たのでしょうか。質問にはこういった内容が必要です。
が、実は原因は戻り値とは全く別のところにあります。

このメソッドに戻り値の型の指定は不要です、おそらくコンストラクタとして記述したものだと推測します。
コンストラクタのメソッド名はクラスと同じです。スーパークラス名ではありません。
スーパークラスであるEntityLargeFireballのコンストラクタをそのままコピーしてきたのではないかと思われます。
メソッドをクラスと同じ名前に修正してみてください。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Ender Colossus » 2018年10月07日(日) 15:51

MODを作っているのですが 
コード: 全て選択
package mod.ultimate;

import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.World;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.DamageSource;
import net.minecraft.potion.PotionEffect;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.init.Items;
import net.minecraft.init.Blocks;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityGolem;
import net.minecraft.entity.monster.EntityGhast;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIEntityLargeFireballAttack;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.IRangedAttackMob;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.Entity;
import net.minecraft.client.renderer.entity.RenderSnowball;
import net.minecraft.client.renderer.entity.RenderBiped;
import net.minecraft.client.model.ModelBiped;

import java.util.Random;

import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.client.registry.RenderingRegistry;

@SuppressWarnings("unchecked")
public class jumpingArcher {

   public static int mobid = 0;
   public Object instance;

   public void load() {
   }

   public void generateNether(World world, Random random, int chunkX, int chunkZ) {
   }

   public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
   }

   public int addFuel(ItemStack fuel) {
      return 0;
   }

   @SideOnly(Side.CLIENT)
   public void registerRenderers() {
      RenderingRegistry.registerEntityRenderingHandler(jumpingArcher.EntityjumpingArcher.class, new RenderBiped(new ModelBiped(), 0) {
         protected ResourceLocation getEntityTexture(Entity par1Entity) {
            return new ResourceLocation("NewSkinGhast.png");
         }
      });
      RenderingRegistry.registerEntityRenderingHandler(EntityLargeFireballCustom.class,
            new RenderSnowball(new ItemStack(mcreator_bigSword.block).getItem()));

   }

   public void serverLoad(FMLServerStartingEvent event) {
   }

   public void preInit(FMLPreInitializationEvent event) {
      int entityID = EntityRegistry.findGlobalUniqueEntityId();
      mobid = entityID;
      EntityRegistry.registerGlobalEntityID(jumpingArcher.EntityjumpingArcher.class, "jumpingArcher", entityID);
      EntityRegistry.registerModEntity(jumpingArcher.EntityjumpingArcher.class, "jumpingArcher", entityID, instance, 64, 1, true);
      EntityList.entityEggs.put(Integer.valueOf(entityID), new EntityList.EntityEggInfo(entityID, (255 << 16) + (255 << 8) + 255, (255 << 16)
            + (255 << 8) + 255));
      EntityRegistry.addSpawn(jumpingArcher.EntityjumpingArcher.class, 20, 3, 30, EnumCreatureType.monster, new BiomeGenBase[]{
            BiomeGenBase.ocean, BiomeGenBase.plains, BiomeGenBase.desert, BiomeGenBase.extremeHills, BiomeGenBase.forest, BiomeGenBase.taiga,
            BiomeGenBase.swampland, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.icePlains,
            BiomeGenBase.iceMountains, BiomeGenBase.mushroomIsland, BiomeGenBase.mushroomIslandShore, BiomeGenBase.beach,
            BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.taigaHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle,
            BiomeGenBase.jungleHills, BiomeGenBase.jungleEdge, BiomeGenBase.deepOcean, BiomeGenBase.stoneBeach, BiomeGenBase.coldBeach,
            BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, BiomeGenBase.roofedForest, BiomeGenBase.coldTaiga,
            BiomeGenBase.coldTaigaHills, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, BiomeGenBase.extremeHillsPlus,
            BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, BiomeGenBase.mesa, BiomeGenBase.mesaPlateau_F, BiomeGenBase.mesaPlateau});

      int entityID2 = EntityRegistry.findGlobalUniqueEntityId();
      EntityRegistry.registerModEntity(EntityLargeFireballCustom.class, "entityBulletjumpingArcher", entityID2, instance, 64, 1, true);

   }

   /*
    * public Entity spawnEntity(int var1, World var2, double var3, double var5,
    * double var7) { if(var1==mobid) return new
    * mcreator_jumpingArcher.EntityjumpingArcher(var2); else return null; }
    */

   public static class EntityLargeFireballCustom extends EntityLargeFireball {
      public EntityLargeFireballCustom(World a) {
         super(a);
            }
         
      public EntityLargeFireball(World worldIn, EntityLivingBase shooter, float c) {
               super(worldIn, shooter, c);
          }
     }

   public static class EntityjumpingArcher extends EntityMob implements IRangedAttackMob {
      World world = null;

      public EntityjumpingArcher(World var1) {
         super(var1);
         world = var1;
         experienceValue = 5;
         this.isImmuneToFire = false;
         addRandomArmor();
         this.tasks.addTask(0, new EntityAISwimming(this));
         this.tasks.addTask(6, new EntityAIWander(this, 1.0D));
         this.tasks.addTask(8, new EntityAILookIdle(this));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(10, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityGolem.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, skull.Entityskull.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, witherSkullboss.EntitywitherSkullboss.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, titan.Entitytitan.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, squidArcher.EntitysquidArcher.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.targetTasks.addTask(10, new EntityAINearestAttackableTarget(this, EntityGhast.class, 2, true));
         this.targetTasks.addTask(11, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(10, new EntityAIAttackOnCollide(this, EntityGolem.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, skull.Entityskull.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, witherSkullboss.EntitywitherSkullboss.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, titan.Entitytitan.class, 1.0D, false));
         this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, jumpingArcher.EntityjumpingArcher.class, 2, true));
         this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false));
         this.tasks.addTask(1, new EntityAIAttackOnCollide(this, jumpingArcher.EntityjumpingArcher.class, 1.0D, false));
         this.tasks.addTask(1, new EntityAILargeFireballAttack(this, 1.0D, 20, 60, 15.0F));

      }

      protected void applyEntityAttributes() {
         super.applyEntityAttributes();
         this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D);
         this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(1500D);
         if (this.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null)
            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(3D);
      }

      protected void addRandomArmor() {

         this.setCurrentItemOrArmor(0, new ItemStack(Items.bow));
      }

      @Override
      public void attackEntityWithRangedAttack(EntityLivingBase target, float flval) {
         EntityLargeFireballCustom entitylargefireball = new EntityLargeFireballCustom(this.worldObj, this, 2.0f);
         this.worldObj.spawnEntityInWorld(entitylargefireball);
      }

      public boolean isAIEnabled() {
         return true;
      }

      @Override
      protected Item getDropItem() {
         return new ItemStack(Items.arrow).getItem();
      }

      /**
       * Returns the sound this mob makes while it's alive.
       */
      protected String getLivingSound() {
         return "";
      }

      /**
       * Returns the sound this mob makes when it is hurt.
       */
      protected String getHurtSound() {
         return "";
      }

      /**
       * Returns the sound this mob makes on death.
       */
      protected String getDeathSound() {
         return "";
      }

      public void onStruckByLightning(EntityLightningBolt entityLightningBolt) {
         super.onStruckByLightning(entityLightningBolt);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            world.setBlock(i, j, k, Blocks.iron_bars, 0, 2);
         }

      }

      protected void fall(float l) {
         super.fall(l);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         super.fall(l);
         Entity entity = this;

         if (true) {
            EntityArrow entityarrow = new EntityArrow(world, (EntityLivingBase) entity, 2 * 2.0F);
            entityarrow.setDamage(2 * 2.0F);
            entityarrow.setKnockbackStrength(1);
            world.playSoundAtEntity(entity, "random.bow", 1.0F, 1.0F / (0.5F * 0.4F + 1.2F) + 2 * 0.5F);
            if (!world.isRemote)
               world.spawnEntityInWorld(entityarrow);
         }

         if (true) {
            if (entity instanceof EntityLivingBase)
               ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(10, 100000, 250));
         }

      }

      public void onDeath(DamageSource dsource) {
         super.onDeath(dsource);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            EntityItem var14 = new EntityItem(world, (double) (i), (double) (j), (double) (k), new ItemStack(Items.arrow, 1, 0));
            var14.delayBeforeCanPickup = 10;
            world.spawnEntityInWorld(var14);
         }

      }

      public void onKillEntity(EntityLiving entityLiving) {
         super.onKillEntity(entityLiving);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;
         Entity entity = this;

         if (true) {
            EntityArrow entityarrow = new EntityArrow(world, (EntityLivingBase) entity, 1 * 2.0F);
            entityarrow.setDamage(1 * 2.0F);
            entityarrow.setKnockbackStrength(1);
            world.playSoundAtEntity(entity, "random.bow", 1.0F, 1.0F / (0.5F * 0.4F + 1.2F) + 1 * 0.5F);
            if (!world.isRemote)
               world.spawnEntityInWorld(entityarrow);
         }

      }

      public boolean interact(EntityPlayer entity) {
         super.interact(entity);
         int i = (int) this.posX;
         int j = (int) this.posY;
         int k = (int) this.posZ;

         return true;
      }

      public String getEntityName() {
         return "jumpingArcher";
      }

   }

}

上のコードの
コード: 全て選択
      public EntityLargeFireball(World worldIn, EntityLivingBase shooter, float c) {
               super(worldIn, shooter, c);
          }
     }

ここの部分が「戻り値の型が必要」と出ます。
調べて,やってもエラーが出ました。
どうすればいいですか。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by kerochan » 2018年9月27日(木) 20:08

申し訳ありません。自己解決しました。
sendWindowPropertyメソッドと同じクラスにあるupdateProgressBarメソッドの第1,2引数が、sendWindowPropertyメソッドの第2,3引数に対応していました。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by kerochan » 2018年9月27日(木) 18:52

こんにちは。minecraft ver1.12.2でforge(バージョンは14.23.4.2705)でmodを製作している者です。

modでContainerクラスを継承したクラスを作成している際に、疑問点が生じたため質問させていただきます。
それは、sendWindowPropertyメソッドの第2引数の値がどのようにして更新する変数を指定しているのかという疑問です。

バニラのContainerFurnaceクラスやContainerBrewingStandクラスのdetectAndSendChangesメソッドでは、第2引数と第3引数の・・・.getFieldメソッドの引数が一致しているため、おそらくの値をキーとして第3引数の値を用いてクライアント側のコンテナの変数を更新しているのであろうと考えていたのですが、cubex2様の製作したMoreFurnaceというmodではgetFieldメソッドがなく第2引数と第3引数の関連性がないため、このような疑問が生じました。
このメソッドについてwebで検索してみたのですが情報が非常に少なく、満足できる結果は得られませんでした。

sendWindowPropertyメソッドの第2引数の値がどのようにして更新する変数を指定しているのか、ご教示願います。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ゲスト » 2018年9月26日(水) 21:20

1.12.2にてforgeを前提とする自作MODを作成しています。
近接武器を追加したいのですが、武器のリーチを変更する方法はありますか?
理想としては、“剣から範囲攻撃及びそのエンチャントをオミット”と“リーチが剣より1m長い”という武器種なのですが……。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by [ロ凸ロ] » 2018年9月16日(日) 17:41

GuiNewChatを継承してチャット欄に画像を表示させたいのですが、GuiNewChatクラスの代わりにGuiNewChatExtクラスを呼ばせるには処理で詰まっています。
いろいろ調べた結果、Reflectionを使ってGuiIngameにあるpersistantChatGUIの値を書き換える方法を試してみたのですが、エラーを吐いてうまくいきません。
MinecraftForge1.12です
コード: 全て選択
@SubscribeEvent
public void onConnectedToServer(FMLNetworkEvent.ClientConnectedToServerEvent event) throws Exception {
    Field persistantChatGUIField = ReflectionHelper.findField(GuiIngame.class, "field_73840_e");
    persistantChatGUIField.setAccessible(true);

    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(persistantChatGUIField, persistantChatGUIField.getModifiers() & ~Modifier.FINAL);
    persistantChatGUIField.set(null, new GuiNewChatExt(Minecraft.getMinecraft()));
}

エラー:
コード: 全て選択
[17:30:45] [Netty Local Client IO #0/ERROR] [FML]: There was a critical exception handling a packet on channel FML
java.lang.NullPointerException: null
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57) ~[?:1.8.0_51]
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75) ~[?:1.8.0_51]
at java.lang.reflect.Field.set(Field.java:764) ~[?:1.8.0_51]
at com.yu212.samplemod.Samplemod.onConnectedToServer(Samplemod.java:244) ~[Samplemod.class:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_5_Samplemod_onConnectedToServer_ClientConnectedToServerEvent.invoke(.dynamic) ~[?:?]
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179) ~[EventBus.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.completeClientSideConnection(NetworkDispatcher.java:247) ~[NetworkDispatcher.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:558) ~[NetworkDispatcher.class:?]
at net.minecraftforge.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:36) ~[HandshakeCompletionHandler.class:?]
at net.minecraftforge.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:30) ~[HandshakeCompletionHandler.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108) ~[SimpleChannelInboundHandler.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[MessageToMessageDecoder.class:4.1.9.Final]
at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) ~[DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) ~[DefaultChannelPipeline.class:4.1.9.Final]
at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:274) ~[EmbeddedChannel.class:4.1.9.Final]
at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:99) [FMLProxyPacket.class:?]
at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:147) [gw.class:?]
at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:49) [gw.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:396) [NetworkDispatcher.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:271) [NetworkDispatcher.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:74) [NetworkDispatcher.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [DefaultChannelPipeline$HeadContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [AbstractChannelHandlerContext.class:4.1.9.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [DefaultChannelPipeline.class:4.1.9.Final]
at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:443) [LocalChannel.class:4.1.9.Final]
at io.netty.channel.local.LocalChannel.access$500(LocalChannel.java:49) [LocalChannel.class:4.1.9.Final]
at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:397) [LocalChannel$5.class:4.1.9.Final]
at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) [DefaultEventLoop.class:4.1.9.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [SingleThreadEventExecutor$5.class:4.1.9.Final]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ryotaa » 2018年9月16日(日) 16:49

プラグインを作っています。
特定のプレイヤーの入っているチームを取得する方法を教えてください。
viewtopic.php?f=39&t=8371&start=600
ここのPostNo.172544でPlayerから直接チームを取得できないと書いてあったのですが、
そのスレを見てもじゃあどうやってチームを取得するかわからなかったので質問させていただきました。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Totemosuki » 2018年9月15日(土) 07:01

自己解決しました
モデルに問題があって法線を設定してなかったのがダメだったみたいですね…
皆さんありがとうございました

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by Totemosuki » 2018年9月15日(土) 04:16

質問
HandmadeGunsのアドオンを作ろうとしています
モデルが完成し、ゲームに実装をしましたがモデルの一部(銃のストック部分)がまるでカメラが内側にある状態かのように透けてしまいます
また、一人称視点、HandmadeGuns同梱のガンラックに飾るときは透け、三人称視点やLittleMaidが持つときは透けません
どういうときこのような状態になり、どうすればストックが透けずに描写されるかをお尋ねしたいです

環境
Minecraft1.7.10
Forge10.13.4.1558
HandmadeGuns 1.7x-srg-1
添付ファイル
amarec (20180915-035731).jpg
三人称
amarec (20180915-035517).jpg
ガンラック
amarec (20180915-034412).jpg
一人称

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ゲスト » 2018年9月02日(日) 15:59

では、他のMODを参考にして頑張ろうと思います。
CrafterKinaさん、ご回答ありがとうございました!

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by CrafterKina » 2018年9月02日(日) 15:45

ゲスト さんが書きました:1.12.2にて自作MODを作成しています。
自作のツルハシを追加しているのですが、そのツルハシで岩盤を破壊・回収したいのです。
できれば約10秒ほどで採掘できるようにしたいのですが、方法が分かりません。
どうか誰か、ご教示ください!
なお、そのツルハシのツールマテリアルの値は2, 200, 14.0F, 1.0F, 10です。


その質問に答えるとModが一つできますね。
あまり質問が大雑把すぎるとアイデアトピックに書くのと変わりないと自分は思っているので、もう少し質問を絞っていただけると回答しやすいです。
どこから手を付けていいか分からない、というのであれば他のModのコードを参考にするのがいいかと思います。(例えばDigBedrockなど)

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ゲスト » 2018年9月02日(日) 10:58

1.12.2にて自作MODを作成しています。
自作のツルハシを追加しているのですが、そのツルハシで岩盤を破壊・回収したいのです。
できれば約10秒ほどで採掘できるようにしたいのですが、方法が分かりません。
どうか誰か、ご教示ください!
なお、そのツルハシのツールマテリアルの値は2, 200, 14.0F, 1.0F, 10です。

ページトップ

x