ページ 126135

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

投稿記事Posted: 2017年1月04日(水) 13:32
by ユメミノウツツ
もう一つ、同じくMC1.7.10,Forge1558で質問させていただきます。

今、確率で相手への攻撃をはずす(ミスする)、という仕様を追加しようと思っていて、取り敢えず攻撃をはずせるかどうか実装したのですが、上手くいきません。onLeftClickEntityにtrueを返せばダメージ処理が行われないと聞いたのでそのとおりにtrueを返しているつもりですが、思いっきり攻撃してます。なにか別の手順を踏まなければ行かないのでしょうか?それとも別の何かと干渉してたりするのでしょうか?回答のほうよろしくお願いします。
以下ソース
コード: 全て選択
package femod.item;

import java.util.Random;

import org.lwjgl.input.Mouse;

import com.sun.xml.internal.stream.Entity;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;

/** 武器の仕様を設定するクラス */
public class FeWeapon extends ItemSword{

   public FeWeapon(ToolMaterial toolMaterial) {
      super(toolMaterial);
      maxStackSize = 1;
   }
   
   //命中率
    public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity){
        return true;
    }
}

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

投稿記事Posted: 2017年1月05日(木) 15:51
by s_sara
Ch1a さんが書きました:
s_sara さんが書きました:1.8移行でのテクスチャーの貼り方についてお尋ねします。


おそらくですがblockstates/sampleblock.jsonの内容を
コード: 全て選択
{
  "forge_marker": 1,
  "defaults": {
    "model": "cube_all",
    "textures": {
      "all": "SampleBlock:block/sampleblock"
    },
    "transform": "forge:default-block"
  },
  "variants": {
    "normal":[{}],
    "inventory":[{}]
  }
}


に変えるとできると思います。

また
src/main/resources/assets.SampleBlock.textures.blocks/sampleblock.png
ではなく
src/main/resources/assets/SampleBlock/textures/blocks/sampleblock.png
ですね。
ほかのmodelsなども同様です。

ディレクトリ構造等ややこしいと思いますので、参考までにこちらもどうぞ。
https://github.com/Ch1a/BlockTest


ありがとうございます。
フォルダの構成自体は間違えてなかったんですが、
大文字を使ってたことによってフォルダが見れてなかったみたいです。
※「.」は「/」です。エクリプスで「.」になってたので、そう書きました。

blockstates/sampleblock.json
を変更し、フォルダを小文字にすることによってちゃんとテクスチャーが反映されました。

ありがとうございました。

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

投稿記事Posted: 2017年1月05日(木) 21:57
by Ch1a
ユメミノウツツ さんが書きました:MC1.7.10,Forge1558,Eclipse使用環境下で質問させていただきます。

他の方が作ったMODの処理を参考にさせていただこうと思い、ワークスペースのeclipse\modsの中にMODを入れたのですが、その状態でEclipseのデバッグを実行するとクラッシュしました。なお、MODを変えて複数回試しましたがどれもダメでした。どうしたらちゃんと起動しますでしょうか。なお、自分のMODはFEMODです。
クラッシュレポート
---- Minecraft Crash Report ----
// Who set us up the TNT?

Time: 17/01/04 10:56
Description: There was a severe problem during mod loading that has caused the game to fail

cpw.mods.fml.common.LoaderException: java.lang.NoSuchMethodError: mods.flammpfeil.slashblade.ItemSWaeponMaterial.func_77627_a(Z)Lnet/minecraft/item/Item;
at cpw.mods.fml.common.LoadController.transition(LoadController.java:163)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:559)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:522)
at net.minecraft.client.Minecraft.run(Minecraft.java:942)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
Caused by: java.lang.NoSuchMethodError: mods.flammpfeil.slashblade.ItemSWaeponMaterial.func_77627_a(Z)Lnet/minecraft/item/Item;
at mods.flammpfeil.slashblade.ItemSWaeponMaterial.<init>(ItemSWaeponMaterial.java:39)
at mods.flammpfeil.slashblade.SlashBlade.preInit(SlashBlade.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
... 12 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.8.0_101, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 810170368 bytes (772 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 5 mods loaded, 5 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
UCH mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
UCH FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCH Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar)
UCH FEMOD{1.0} [FEMOD] (bin)
UCE flammpfeil.slashblade{mc1.7.10-r86} [SlashBlade] (SlashBlade-mc1.7.10-r86.jar)
GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.14008 Compatibility Profile Context 21.19.137.1' Renderer: 'AMD Radeon(TM) R7 Graphics'

他の方が作ったMODは、Ferne様の抜刀剣MODver r86(viewtopic.php?f=13&t=2150)です。
http://cra.webcrow.jp/index.html にて調べると『前提Modに関する問題、またはマルチプレイ非対応の処理が含まれている可能性があります。』と表示されました。前提MODはなかったはずなのでマルチに関することかと思いますが、何しろ自分はModding始めたばっかで知識がないのでよくわからず・・・。

回答のほどよろしくお願いします。



eclipse/modsに入れたのは開発者向けのmodファイルでしょうか?
開発環境には通常のプレイ向けのmodを入れることはできなかったはずです。

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

投稿記事Posted: 2017年1月05日(木) 22:04
by Ch1a
ユメミノウツツ さんが書きました:もう一つ、同じくMC1.7.10,Forge1558で質問させていただきます。

今、確率で相手への攻撃をはずす(ミスする)、という仕様を追加しようと思っていて、取り敢えず攻撃をはずせるかどうか実装したのですが、上手くいきません。onLeftClickEntityにtrueを返せばダメージ処理が行われないと聞いたのでそのとおりにtrueを返しているつもりですが、思いっきり攻撃してます。なにか別の手順を踏まなければ行かないのでしょうか?それとも別の何かと干渉してたりするのでしょうか?回答のほうよろしくお願いします。
以下ソース
コード: 全て選択
package femod.item;

import java.util.Random;

import org.lwjgl.input.Mouse;

import com.sun.xml.internal.stream.Entity;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;

/** 武器の仕様を設定するクラス */
public class FeWeapon extends ItemSword{

   public FeWeapon(ToolMaterial toolMaterial) {
      super(toolMaterial);
      maxStackSize = 1;
   }
   
   //命中率
    public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity){
        return true;
    }
}


確率で攻撃を無効化するだけなら
コード: 全て選択
   @EventHandler
   public void preInit(FMLPreInitializationEvent event) {
      //イベントの登録
      MinecraftForge.EVENT_BUS.register(this);
   }

   @SubscribeEvent
   //攻撃が行われたときのイベントを取得
   public void onAttackEvent(AttackEntityEvent entityEvent) {
      //ランダムな数を生成 0~9
      int rand = (int) (Math.random() * 10);
      //1なら攻撃をキャンセル=ダメージを無し
      if (rand == 1) {
         entityEvent.setCanceled(true);
      }
   }


というかんじで行けると思います。
見たところ、特定アイテムを使っているときにこのような効果にしたいようにみえるので
その場合はonAttackEventの中身でentityEventからプレイヤー情報が取得できるので
判定をしてみてください。

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

投稿記事Posted: 2017年1月06日(金) 10:03
by ユメミノウツツ
Ch1a さんが書きました:
ユメミノウツツ さんが書きました:



eclipse/modsに入れたのは開発者向けのmodファイルでしょうか?
開発環境には通常のプレイ向けのmodを入れることはできなかったはずです。

えっ、あ、普通のMODは入れられないんですか。ありがとうございます!

Ch1a さんが書きました:
ユメミノウツツ さんが書きました:


確率で攻撃を無効化するだけなら
コード: 全て選択
   @EventHandler
   public void preInit(FMLPreInitializationEvent event) {
      //イベントの登録
      MinecraftForge.EVENT_BUS.register(this);
   }

   @SubscribeEvent
   //攻撃が行われたときのイベントを取得
   public void onAttackEvent(AttackEntityEvent entityEvent) {
      //ランダムな数を生成 0~9
      int rand = (int) (Math.random() * 10);
      //1なら攻撃をキャンセル=ダメージを無し
      if (rand == 1) {
         entityEvent.setCanceled(true);
      }
   }


というかんじで行けると思います。
見たところ、特定アイテムを使っているときにこのような効果にしたいようにみえるので
その場合はonAttackEventの中身でentityEventからプレイヤー情報が取得できるので
判定をしてみてください。


こちらもわざわざソースまで書いていただいて本当にありがとうございます。イベントは自分自身よくわかってないのですが、ModdingWikiなどを見て頑張りたいと思います。ちなみに、onLeftClickEntityにtrueを返してもダメージ処理無効化にはならないんですか?onLeftClickEntityの説明を読む限り無効化するって書いてあった気がしたんですが・・・。

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

投稿記事Posted: 2017年1月06日(金) 19:04
by defeatedcrow
ユメミノウツツ さんが書きました:
Ch1a さんが書きました:
ユメミノウツツ さんが書きました:



eclipse/modsに入れたのは開発者向けのmodファイルでしょうか?
開発環境には通常のプレイ向けのmodを入れることはできなかったはずです。

えっ、あ、普通のMODは入れられないんですか。ありがとうございます!

Ch1a さんが書きました:
ユメミノウツツ さんが書きました:


確率で攻撃を無効化するだけなら
コード: 全て選択
   @EventHandler
   public void preInit(FMLPreInitializationEvent event) {
      //イベントの登録
      MinecraftForge.EVENT_BUS.register(this);
   }

   @SubscribeEvent
   //攻撃が行われたときのイベントを取得
   public void onAttackEvent(AttackEntityEvent entityEvent) {
      //ランダムな数を生成 0~9
      int rand = (int) (Math.random() * 10);
      //1なら攻撃をキャンセル=ダメージを無し
      if (rand == 1) {
         entityEvent.setCanceled(true);
      }
   }


というかんじで行けると思います。
見たところ、特定アイテムを使っているときにこのような効果にしたいようにみえるので
その場合はonAttackEventの中身でentityEventからプレイヤー情報が取得できるので
判定をしてみてください。


こちらもわざわざソースまで書いていただいて本当にありがとうございます。イベントは自分自身よくわかってないのですが、ModdingWikiなどを見て頑張りたいと思います。ちなみに、onLeftClickEntityにtrueを返してもダメージ処理無効化にはならないんですか?onLeftClickEntityの説明を読む限り無効化するって書いてあった気がしたんですが・・・。


trueにすれば攻撃は確かに起こらないです。(アイテムを振るモーションは呼ばれますが。)
処理を辿ってみると、AttackEntityEventと同じタイミングで攻撃キャンセルを行っているはずなので、どちらでも同じ結果が得られるはず。

これで攻撃してしまうようなら、このメソッド自体が何らかの理由で呼ばれていない可能性も確認してみると良いと思います。
例えば、追加したアイテムを自作クラスで生成していないとか、凡ミスの可能性も視野に入れる等。
(慣れたModderでも凡ミスは頻発します、見直しは大事。)

確認方法は色々ありますが、メソッド内にチャットログやLogger等を仕込んでonLeftClickEntityメソッドが呼ばれているかどうか確認してみたらいいんじゃないですかね。
Loggerは、コアクラスにLoggerインスタンスを予め作っても良いし、たまにしか使わないならLogManager.getLogger("modid")などでその都度Loggerを生成する(""内は任意の記述でOK)ことでもログを生成できます。ログは、Eclipseであればコンソールログに出てきますしwarnで呼べばログファイルにも出てくるんじゃないかな。
チャットは、1.7.10であればplayer.addChatMessage(new ChatComponentText("任意のテキスト"));で表示できます


あと、開発環境に入れるMODについてはdeobf版でないと動かないです。
実環境に入れるMODはソースの難読化を行わなければならないようになっていますので。(というか、普段Modderが使用しているソース自体が、func~のように難読化されたソースをMCPが読みやすく加工した状態のものを使用しているもんですから、本環境に使うためにはそれをもとに戻さないといけないんです)

Modderによってはdeobf版を用意していたり、build.gradleに記述すれば開発環境に自動DL・導入できるように用意してくれている場合があるので、作者に問い合わせてみると良いと思います。
(抜刀剣の作者さんならどちらか対応しているんじゃないかなぁ)

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

投稿記事Posted: 2017年1月06日(金) 20:39
by Ch1a
onLeftClickEntityでも攻撃キャンセルできるのは知りませんでした。
未確認で申し訳ないのですが
もしかしたら
onLeftClickEntityをしっかりオーバーライドできてないのではないかと思います。
アノテーションもついてないようですし。
バニラのコードを確認して引数の順番などを確認してみてください。
eclipseを使っているならオーバーライドができている場合
@Overrideアノテーションが自動でつく、あるいは下線などでお知らせしてくれると思います。

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

投稿記事Posted: 2017年1月07日(土) 20:25
by LaFr4nc3
質問させていただきます。
Minecraft 1.7.10でMod開発を始めようと思い、とりあえず一つのアイテムを追加するMODを作りましたが、アイテムにテクスチャが反映されません。
どうすれば反映されるでしょうか、ご教示頂きたいです。

使用環境: MC 1.7.10, Forge 10.13.4.1558, IntelliJ IDEA

テクスチャの場所:
src\main\resources\assets\cuisinecraft\textures\items\flour.png


CuisineCraftCore.java
コード: 全て選択
package xyz.lafr4nc3.cuisinecraft;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import xyz.lafr4nc3.cuisinecraft.common.CommonProxy;

@Mod(modid = CuisineCraftCore.MODID, name = CuisineCraftCore.NAME, version = CuisineCraftCore.VERSION, dependencies = "required-after:Forge@[10.13.4.1558,)")
public class CuisineCraftCore {

    public static final String MODID = "cuisinecraft";
    public static final String NAME = "CuisineCraft";
    public static final String VERSION = "0.0.1";


    @SidedProxy(clientSide = "xyz.lafr4nc3.cuisinecraft.client.ClientProxy", serverSide = "xyz.lafr4nc3.cuisinecraft.server.ServerProxy")
    public static CommonProxy proxy;


    @Instance("CuisineCraftCore")
    public static CuisineCraftCore instance = new CuisineCraftCore();

    @EventHandler
    public void preInit(FMLPreInitializationEvent e) {
        proxy.preInit(e);

        CuisineCraftItems.init();
    }

    @EventHandler
    public void init(FMLInitializationEvent e) {
        proxy.init(e);

    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent e) {
        proxy.postInit(e);

    }
}


CuisineCraftItems.java
コード: 全て選択
package xyz.lafr4nc3.cuisinecraft;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class CuisineCraftItems {

    public static Item flour;

    public static final void init() {
        flour = new Item()
                .setUnlocalizedName("flour")
                .setCreativeTab(CreativeTabs.tabMaterials)
                .setTextureName(CuisineCraftCore.MODID + ":flour");

        GameRegistry.registerItem(flour, flour.getUnlocalizedName());
    }
}


実行ログ
コード: 全て選択
[20:08:57] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
[20:08:57] [Client thread/ERROR] [TEXTURE ERRORS]: The following texture errors were found.
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: ==================================================
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:   DOMAIN cuisinecraft
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: --------------------------------------------------
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:   domain cuisinecraft is missing 1 texture
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:     domain cuisinecraft is missing a resource manager - it is probably a side-effect of automatic texture processing
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: -------------------------
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:     The missing resources for domain cuisinecraft are:
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:       textures/items/flour.png
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: -------------------------
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]:     No other errors exist for domain cuisinecraft
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: ==================================================
[20:08:58] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

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

投稿記事Posted: 2017年1月08日(日) 09:02
by ユメミノウツツ
LaFr4nc3 さんが書きました:質問させていただきます。
Minecraft 1.7.10でMod開発を始めようと思い、とりあえず一つのアイテムを追加するMODを作りましたが、アイテムにテクスチャが反映されません。
どうすれば反映されるでしょうか、ご教示頂きたいです。

初心者ですが「これかも?」と思ったので一応・・・。
コード: 全て選択
.setTextureName(【CuisineCraftCore.MODID】 + ":flour");

これって指定するのはMODIDではなくtexturesフォルダの前cuisinecraftでは?自分は("FEMOD:OO")と違う書き方をしているものでなんともいえないのですが・・・しかもMODIDとフォルダ名一緒にしてるし。でも確かフォルダ名だった気がします。
間違っていたらすいません。

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

投稿記事Posted: 2017年1月08日(日) 10:00
by ユメミノウツツ
defeatedcrow さんが書きました:

Ch1a さんが書きました:

無事解決いたしました。onLeftClickEntityが呼び出せなかった理由はフィールドのEntityのインポートの指定ミスだったようです。お二方ともJavaの基礎知識もなってないような初心者に対し丁寧に教えてくださってありがとうございました。

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

投稿記事Posted: 2017年1月10日(火) 22:34
by ユメミノウツツ
上と同じく1.7.10,1558で質問させていただきます。質問ばかりですいません・・・。

onLeftClickEntityメソッドで乱数を引き、一定数以下なら攻撃、上回るならミスという仕様に組んだのですが、ミスと表示させても攻撃がヒットする場合やミスミスと1回の攻撃で2回表示される場合あり、試しに成功時にFalseと表示するようやってみたら、どうやら1回左クリックするごとに2回攻撃が発生した判定になるようです。どうやったら1回のみの判定にできるでしょうか。2回のままだと上手くクールタイムも指定できない(viewtopic.php?f=39&t=8370&start=1800 を参照)ので、どうにかしたいです。ご教示よろしくお願いします。

FeWeapon.class
コード: 全て選択
package femod.item;

import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;

/** 武器の仕様を設定するクラス
 *  命中率、必殺率の乱数抽選と処理 */
public class FeWeapon extends ItemSword{
   
   /** 命中の乱数 */
   Random hitrand1 = new Random();
   Random hitrand2 = new Random();
   /** 必殺の乱数 */
   
   //クラスの性能
   public FeWeapon(ToolMaterial toolMaterial) {
      super(toolMaterial);
      maxStackSize = 1;
   }

   //命中率
      //攻撃判定と同時に抽選、randhit <= hitならfalseで攻撃、>ならtrueでミス
      //GBA版FEの乱数は2回抽選した平均値を使う
   //必殺率
      //攻撃判定と同時に抽選、以後未定。
   public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity){
      
      //1~100で乱数抽選、命中率乱数
      int hit1 = hitrand1.nextInt(100) + 1;
      int hit2 = hitrand2.nextInt(100) + 1;
      float randhit  = (hit1 + hit2) / 2;

      //命中処理
         //乱数が命中率以下なら成功
      if(randhit <= 75){/* 仮設定75% */
         //攻撃成功、通常処理
         //デバッグメッセージ
         player.addChatMessage(new ChatComponentText("False"));
         return false;
      }else{
         //MISS!と表示させる
         player.addChatMessage(new ChatComponentText("MISS!"));
         //攻撃失敗、ダメージは入らない
         return true;
      }
   }
}

なお、乱数の抽選は上で教えてもらった int rand = (int) (Math.random() * 10);を使用しても変わりませんでした。

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

投稿記事Posted: 2017年1月10日(火) 22:49
by elise_blacklab
ユメミノウツツ さんが書きました:どうやら1回左クリックするごとに2回攻撃が発生した判定になるようです

Clientとserverそれぞれで呼ばれていませんか?
このような場合,引数のどちらかのentityからWorldを取得してisRemoteで判定するのがお約束になってます.

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

投稿記事Posted: 2017年1月11日(水) 15:38
by ユメミノウツツ
elise_blacklab さんが書きました:
ユメミノウツツ さんが書きました:どうやら1回左クリックするごとに2回攻撃が発生した判定になるようです

Clientとserverそれぞれで呼ばれていませんか?
このような場合,引数のどちらかのentityからWorldを取得してisRemoteで判定するのがお約束になってます.

いえ、eclipseのログを見る限りどっちもクライアント側で発生しているようです。
コード: 全て選択
[15:34:06] [Client thread/INFO]: [CHAT] False
[15:34:06] [Client thread/INFO]: [CHAT] False
[15:34:10] [Server thread/INFO]: Player965 は [所持品の確認] の実績を取得した
[15:34:10] [Client thread/INFO]: [CHAT] Player965 は [所持品の確認] の実績を取得した
[15:34:11] [Client thread/INFO]: [CHAT] False
[15:34:11] [Client thread/INFO]: [CHAT] False
[15:34:18] [Server thread/INFO]: Player965 は [木を手に入れる] の実績を取得した
[15:34:18] [Client thread/INFO]: [CHAT] Player965 は [木を手に入れる] の実績を取得した
[15:34:20] [Client thread/INFO]: [CHAT] False
[15:34:20] [Client thread/INFO]: [CHAT] False

試しに@SideOnlyを使ってみましたがサーバー指定では発生せず、クライアント指定では上と状況が変わらず。entityからworldを取得する方法が分からなかったのでSideOnlyを使いましたが、isRemoteでも多分変わらないと思います。

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

投稿記事Posted: 2017年1月11日(水) 18:35
by defeatedcrow
ユメミノウツツ さんが書きました:
elise_blacklab さんが書きました:
ユメミノウツツ さんが書きました:どうやら1回左クリックするごとに2回攻撃が発生した判定になるようです

Clientとserverそれぞれで呼ばれていませんか?
このような場合,引数のどちらかのentityからWorldを取得してisRemoteで判定するのがお約束になってます.

いえ、eclipseのログを見る限りどっちもクライアント側で発生しているようです。
コード: 全て選択
[15:34:06] [Client thread/INFO]: [CHAT] False
[15:34:06] [Client thread/INFO]: [CHAT] False
[15:34:10] [Server thread/INFO]: Player965 は [所持品の確認] の実績を取得した
[15:34:10] [Client thread/INFO]: [CHAT] Player965 は [所持品の確認] の実績を取得した
[15:34:11] [Client thread/INFO]: [CHAT] False
[15:34:11] [Client thread/INFO]: [CHAT] False
[15:34:18] [Server thread/INFO]: Player965 は [木を手に入れる] の実績を取得した
[15:34:18] [Client thread/INFO]: [CHAT] Player965 は [木を手に入れる] の実績を取得した
[15:34:20] [Client thread/INFO]: [CHAT] False
[15:34:20] [Client thread/INFO]: [CHAT] False

試しに@SideOnlyを使ってみましたがサーバー指定では発生せず、クライアント指定では上と状況が変わらず。entityからworldを取得する方法が分からなかったのでSideOnlyを使いましたが、isRemoteでも多分変わらないと思います。


@SideOnlyアノテーションとisRemoteは別物なのでisRemoteを使うべきかと。
entityはWorldインスタンスを持っています。この場合はplayerのいるワールドをplayer.getWorld()かplayer.worldObjのどっちかがありますので、それで取れると思います

原則的には、Entityに何かする処理ではisRemoteがfalseの場合(サーバの場合)に限定したほうが良いです
Player以外のEntityの多くの情報はサーバ側のみが持っていて、クライアント側での変更がサーバ側で上書きされたりします
特に乱数を使う処理であれば、サーバとクライアントで乱数の出目が食い違ってしまうので片方だけにしたほうが良いです

わからないはずの人間の「変わらないと思います」は初心者のドツボあるあるですが
特にサバクラ関連については、ハマりやすいところなので…

ちなみに
シングルプレイでは「PC上のクライアント内にサーバとクライアントが両立している状態」なもんで、SideOnlyじゃ引っかからない場合があるんです、同じクライアント内なんで
例えば、本来サーバ側にしかない処理でSide.CLIENTの描画処理を誤って呼んでしまっていてもシングルプレイだと動いてしまったりします、そういう場合にマルチプレイヤーからはクラッシュ報告が来たりします
(コイツを使う場面では、Side.CLIENTならそもそもサーバ側には関連クラス自体がまるきりなかったりして、インポートすらできない、指定していない側はそもそも処理に到達できる構造にしてはいけない、そういう性質のものです
使うと好きなところで処理を飛ばしてくれる便利なものではなく、”これがついている処理には指定されない側からアクセスするんじゃねぇぞ”という、どちらかというとModder側が対処するべき目印です
一応、Modder側も自分のソース内で活用できないことはないですが…)

シングルプレイ内での処理分岐にはieRemoteを使います
バニラの処理の流れで、サバクラ共用で使われているクラス、サーバ側しか存在しない処理、クライアント側しか存在しない処理、などなどがあって、判定方法も使い分けが要ります

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

投稿記事Posted: 2017年1月12日(木) 21:12
by ユメミノウツツ
defeatedcrow さんが書きました:@SideOnlyアノテーションとisRemoteは別物なのでisRemoteを使うべきかと。
entityはWorldインスタンスを持っています。この場合はplayerのいるワールドをplayer.getWorld()かplayer.worldObjのどっちかがありますので、それで取れると思います

原則的には、Entityに何かする処理ではisRemoteがfalseの場合(サーバの場合)に限定したほうが良いです
Player以外のEntityの多くの情報はサーバ側のみが持っていて、クライアント側での変更がサーバ側で上書きされたりします
特に乱数を使う処理であれば、サーバとクライアントで乱数の出目が食い違ってしまうので片方だけにしたほうが良いです

わからないはずの人間の「変わらないと思います」は初心者のドツボあるあるですが
特にサバクラ関連については、ハマりやすいところなので…

ちなみに
シングルプレイでは「PC上のクライアント内にサーバとクライアントが両立している状態」なもんで、SideOnlyじゃ引っかからない場合があるんです、同じクライアント内なんで
例えば、本来サーバ側にしかない処理でSide.CLIENTの描画処理を誤って呼んでしまっていてもシングルプレイだと動いてしまったりします、そういう場合にマルチプレイヤーからはクラッシュ報告が来たりします
(コイツを使う場面では、Side.CLIENTならそもそもサーバ側には関連クラス自体がまるきりなかったりして、インポートすらできない、指定していない側はそもそも処理に到達できる構造にしてはいけない、そういう性質のものです
使うと好きなところで処理を飛ばしてくれる便利なものではなく、”これがついている処理には指定されない側からアクセスするんじゃねぇぞ”という、どちらかというとModder側が対処するべき目印です
一応、Modder側も自分のソース内で活用できないことはないですが…)

シングルプレイ内での処理分岐にはieRemoteを使います
バニラの処理の流れで、サバクラ共用で使われているクラス、サーバ側しか存在しない処理、クライアント側しか存在しない処理、などなどがあって、判定方法も使い分けが要ります

ありがとうございます。おかげで無事治せました。

SideOnlyとisRemoteは別物なんですか。基本的にSideOnlyはあんまり使わなくてもいい感じですかね?サーバーかクライアントかを指定する場合は基本的にisRemoteを使うべきなのか。SideOnlyとisRemoteの違いについては今度調べてみます。
因みにisRemoteをfalseにするというのは『(!player.getEntityWorld().isRemote)』という風に!を付けるってことでいいんですかね?
助言ありがとうございます。特に判断のできない初心者の身なので、先入観を持たないようにいっそう気をつけたいと思います。
マルチプレイは自分がそもそもできない環境なので対応させられるかは分かりませんが、対応させるときはこの言葉を思い出して頑張りたいと思います。

答えてくださったelise_blacklabさん、defeatedcrowさん、本当にありがとうございました。

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

投稿記事Posted: 2017年1月12日(木) 22:31
by たつ郎
1.10.2でmodを作り始めたのですが、実行しようとするとすぐにクラッシュしてしまいます。
最初は起動できていたのですが、javaのバージョンが古いと言われて実行できなくなり、設定を変更したが直らず、その後も色々と調べてみたのですが解決策がわかりませんでした。
どなたか教えていただけると嬉しいです。

コード: 全て選択
2017-01-12 22:15:37,363 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-01-12 22:15:37,364 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[22:15:37] [main/INFO] [GradleStart]: Extra: []
[22:15:37] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, C:/Users/tatsu/.gradle/caches/minecraft/assets, --assetIndex, 1.10, --accessToken{REDACTED}, --version, 1.10.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[22:15:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[22:15:37] [main/INFO] [FML]: Forge Mod Loader version 12.18.3.2185 for Minecraft 1.10.2 loading
[22:15:37] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_111, running on Windows 10:amd64:10.0, installed at C:\Users\tatsu\Downloads\pleiades-e4.6-java-jre_20161018\pleiades\java\8\jre
[22:15:37] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[22:15:37] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[22:15:37] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[22:15:37] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[22:15:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[22:15:37] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[22:15:37] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[22:15:38] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[22:15:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[22:15:38] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[22:15:39] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[22:15:39] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[22:15:39] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[22:15:39] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
2017-01-12 22:15:39,977 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-01-12 22:15:40,007 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
2017-01-12 22:15:40,009 WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
[22:15:40] [Client thread/INFO]: Setting user: Player941
[22:15:44] [Client thread/INFO]: LWJGL Version: 2.9.4
[22:15:45] [Client thread/INFO] [STDOUT]: [net.minecraftforge.fml.client.SplashProgress:start:221]: ---- Minecraft Crash Report ----
// Surprise! Haha. Well, this is awkward.

Time: 17/01/12 22:15
Description: Loading screen debug info

This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
   Minecraft Version: 1.10.2
   Operating System: Windows 10 (amd64) version 10.0
   Java Version: 1.8.0_111, Oracle Corporation
   Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
   Memory: 92136608 bytes (87 MB) / 264331264 bytes (252 MB) up to 1060372480 bytes (1011 MB)
   JVM Flags: 5 total; -Xmx1G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
   IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
   FML:
   Loaded coremods (and transformers):
   GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 20.19.15.4454' Renderer: 'Intel(R) HD Graphics 520'
[22:15:45] [Client thread/INFO] [FML]: MinecraftForge v12.18.3.2185 Initialized
[22:15:45] [Client thread/INFO] [FML]: Replaced 231 ore recipes
[22:15:46] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[22:15:46] [Client thread/INFO] [FML]: Searching C:\mod\1.10.2\run\mods for mods
[22:15:47] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
[22:15:47] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, materials] at CLIENT
[22:15:47] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, materials] at SERVER
[22:15:48] [Client thread/ERROR] [FML]: An error occurred trying to load a proxy into {serverSide=ServerProxy, clientSide=ClientProxy}.src.main.saku.Main
java.lang.ClassNotFoundException: ClientProxy
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_111]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ModClassLoader.loadClass(ModClassLoader.java:75) ~[ModClassLoader.class:?]
   at java.lang.Class.forName0(Native Method) ~[?:1.8.0_111]
   at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:71) [ProxyInjector.class:?]
   at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:579) [FMLModContainer.class:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [guava-17.0.jar:?]
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.post(EventBus.java:275) [guava-17.0.jar:?]
   at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243) [LoadController.class:?]
   at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221) [LoadController.class:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) [guava-17.0.jar:?]
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) [guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.post(EventBus.java:275) [guava-17.0.jar:?]
   at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145) [LoadController.class:?]
   at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:549) [Loader.class:?]
   at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:218) [FMLClientHandler.class:?]
   at net.minecraft.client.Minecraft.startGame(Minecraft.java:477) [Minecraft.class:?]
   at net.minecraft.client.Minecraft.run(Minecraft.java:386) [Minecraft.class:?]
   at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
   at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
   at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.NullPointerException
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
   ... 45 more
[22:15:48] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from CONSTRUCTING to PREINITIALIZATION. Loading cannot continue
[22:15:48] [Client thread/ERROR] [FML]:
   States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
   UC   mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
   UC   FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar)
   UC   Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar)
   UE   materials{1.0} [Materials] (bin)
[22:15:48] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[22:15:48] [Client thread/ERROR] [FML]: Caught exception from Materials (materials)
net.minecraftforge.fml.common.LoaderException: java.lang.ClassNotFoundException: ClientProxy

   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:88) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:579) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
   at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
   at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
   at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145) [LoadController.class:?]
   at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:549) [Loader.class:?]
   at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:218) [FMLClientHandler.class:?]
   at net.minecraft.client.Minecraft.startGame(Minecraft.java:477) [Minecraft.class:?]
   at net.minecraft.client.Minecraft.run(Minecraft.java:386) [Minecraft.class:?]
   at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
   at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_111]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111]
   at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111]
   at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
   at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.ClassNotFoundException: ClientProxy
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_111]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ModClassLoader.loadClass(ModClassLoader.java:75) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at java.lang.Class.forName0(Native Method) ~[?:1.8.0_111]
   at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:71) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   ... 39 more
Caused by: java.lang.NullPointerException
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_111]
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ModClassLoader.loadClass(ModClassLoader.java:75) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   at java.lang.Class.forName0(Native Method) ~[?:1.8.0_111]
   at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_111]
   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:71) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
   ... 39 more
[22:15:48] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: ---- Minecraft Crash Report ----
// Shall we play a game?

Time: 17/01/12 22:15
Description: There was a severe problem during mod loading that has caused the game to fail

net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Materials (materials)
Caused by: net.minecraftforge.fml.common.LoaderException: java.lang.ClassNotFoundException: ClientProxy
   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:88)
   at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:579)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
   at com.google.common.eventbus.EventBus.post(EventBus.java:275)
   at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243)
   at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
   at com.google.common.eventbus.EventBus.post(EventBus.java:275)
   at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145)
   at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:549)
   at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:218)
   at net.minecraft.client.Minecraft.startGame(Minecraft.java:477)
   at net.minecraft.client.Minecraft.run(Minecraft.java:386)
   at net.minecraft.client.main.Main.main(Main.java:118)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
   at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
   at GradleStart.main(GradleStart.java:26)
Caused by: java.lang.ClassNotFoundException: ClientProxy
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at net.minecraftforge.fml.common.ModClassLoader.loadClass(ModClassLoader.java:75)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Class.java:348)
   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:71)
   ... 39 more
Caused by: java.lang.NullPointerException
   at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)
   ... 45 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
   Minecraft Version: 1.10.2
   Operating System: Windows 10 (amd64) version 10.0
   Java Version: 1.8.0_111, Oracle Corporation
   Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
   Memory: 143091120 bytes (136 MB) / 309276672 bytes (294 MB) up to 1060372480 bytes (1011 MB)
   JVM Flags: 5 total; -Xmx1G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
   IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
   FML: MCP 9.32 Powered by Forge 12.18.3.2185 4 mods loaded, 4 mods active
   States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
   UC   mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
   UC   FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar)
   UC   Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar)
   UE   materials{1.0} [Materials] (bin)
   Loaded coremods (and transformers):
   GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 20.19.15.4454' Renderer: 'Intel(R) HD Graphics 520'
[22:15:48] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: #@!@# Game crashed! Crash report saved to: #@!@# C:\mod\1.10.2\run\.\crash-reports\crash-2017-01-12_22.15.48-client.txt
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

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

投稿記事Posted: 2017年1月13日(金) 00:08
by elise_blacklab
たつ郎 さんが書きました:[22:15:48] [Client thread/ERROR] [FML]: An error occurred trying to load a proxy into {serverSide=ServerProxy, clientSide=ClientProxy}.src.main.saku.Main
java.lang.ClassNotFoundException: ClientProxy

「Client側のproxyにClientProxyというクラスが指定されているけど,そんなクラス無いよ」と怒られています.
SidedProxyアノテーションの各パラメータにはクラスの完全修飾名を指定します.パッケージに誤りがないか確認してください.
あるいはビルド時の問題で,一部のクラスが正常にコンパイルされていない可能性があります.上記の対応で治らない場合は,ビルド環境上(Gradle)の一時ファイル群を削除してみると治るかもしれません.

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

投稿記事Posted: 2017年1月13日(金) 19:46
by 二進も三進も
1.9.4でフォージを使って開発中なんだが

草ブロックのドロップを変えようと考えてて
既存のクラスを書き換えるか
新しいブロックとして追加するか悩んでるんだが
どちらの方がいいかな

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

投稿記事Posted: 2017年1月13日(金) 19:53
by zyando123
二進も三進も さんが書きました:1.9.4でフォージを使って開発中なんだが

草ブロックのドロップを変えようと考えてて
既存のクラスを書き換えるか
新しいブロックとして追加するか悩んでるんだが
どちらの方がいいかな


forgeのHarvestDropsEventを使う方が簡単だと思います

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

投稿記事Posted: 2017年1月13日(金) 21:16
by たつ郎
elise_blacklab さんが書きました:「Client側のproxyにClientProxyというクラスが指定されているけど,そんなクラス無いよ」と怒られています.
SidedProxyアノテーションの各パラメータにはクラスの完全修飾名を指定します.パッケージに誤りがないか確認してください.
あるいはビルド時の問題で,一部のクラスが正常にコンパイルされていない可能性があります.上記の対応で治らない場合は,ビルド環境上(Gradle)の一時ファイル群を削除してみると治るかもしれません.

無事起動できました。ありがとうございました。