1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
package jp.plusplus.fbs.api;
import net.minecraft.block.Block;
import net.minecraft.client.model.ModelBase;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import java.util.ArrayList;
import java.util.Random;
/**
* Created by plusplus_F on 2015/08/26.
* 陶芸品。ブロックに実装する事。
*/
public interface IPottery {
/**
* 指定の値のItemStackを返す
* @param state
* @param grade
* @param size
* @param pattern
* @param hasEffect
* @return
*/
public ItemStack getItemStack(PotteryState state, PotteryGrade grade, PotterySize size, byte pattern, boolean hasEffect);
/**
* Sizeを設定する
* @param itemStack
* @param size
*/
public void setSize(ItemStack itemStack, PotterySize size);
/**
* サイズを返す
* @param nbt
* @return
*/
public PotterySize getSize(NBTTagCompound nbt);
/**
* 品質を設定する
* @param itemStack
* @param grade
*/
public void setGrade(ItemStack itemStack, PotteryGrade grade);
/**
* 品質を*ランダムに*設定する
* @param itemStack
* @param rand
*/
public void setGrade(ItemStack itemStack, Random rand);
/**
* 品質を返す
* @param nbt
* @return
*/
public PotteryGrade getGrade(NBTTagCompound nbt);
/**
* 模様を設定する
* @param itemStack
* @param pattern
*/
public void setPattern(ItemStack itemStack, byte pattern);
/**
* 模様を返す
* @param nbt
* @return
*/
public byte getPattern(NBTTagCompound nbt);
/**
* 状態を設定する
* 特殊効果持ちの陶芸品を作る場合、ここでBAKEDに遷移する際にアイテムスタックを弄ること
* @param itemStack
* @param state
*/
public void setState(ItemStack itemStack, PotteryState state);
/**
* 状態を返す
* @param nbt
* @return
*/
public PotteryState getState(NBTTagCompound nbt);
/**
* 効果持ちフラグを設定する
* @param itemStack
* @param eff
* @return
*/
public void setEffect(ItemStack itemStack, boolean eff);
/**
* 魔法の効果を持つか
* @param nbt
* @return
*/
public boolean hasEffect(NBTTagCompound nbt);
/**
* hasEffect():true時に、窯で焼きあがる際に呼ばれる
* 効果持ちのItemStackを返す
* @param itemStack
* @return
*/
public ItemStack getEnchantedItemStack(ItemStack itemStack, Random rand);
/**
* 描画用メタデータを得る
* 2211 0000
* 0:模様
* 1:大きさ
* 2:状態
* @param nbt
* @return
*/
public int getMetadata(NBTTagCompound nbt);
/**
* モデル描画に使うRLを返す
* @param metadata
* @return
*/
public ResourceLocation getResourceLocation(int metadata);
/**
* モデル描画に使うMBを返す
* @param metadata
* @return
*/
public ModelBase getModel(int metadata);
/**
* ブロックを返す。基本はthisを返す
* @return
*/
public Block getBlockType();
/**
* 乾燥にかかる*秒数*を返す
* @param nbt
* @return
*/
public int getDrySec(NBTTagCompound nbt);
/**
* そのアイテムを売却した際の価格を返す
* @param itemStack
* @return
*/
public int getMP(ItemStack itemStack);
/**
* 表示されるローカライズされた名前を得る
* @param nbt
* @return
*/
public String getLocalizedName(NBTTagCompound nbt);
/**
* 「完成品の」取り得る全てのパターンを返す
* 返り値はMPやCreativeTabの登録に使われる
* @return
*/
public ArrayList<ItemStack> getAllPattern();
/**
* 被弾時に壺が割れる確率を得る
* @param itemStack
* @return
*/
public float getCrashProbability(ItemStack itemStack);
public static enum PotteryState{
MOLDED(0), DRY(1), BAKED(2), INVALID_VALUE(-1);
PotteryState(int v){ value=(byte)v; }
private byte value;
public byte getValue(){ return value; }
public static PotteryState Get(int v){
if(v==MOLDED.getValue()) return MOLDED;
if(v==DRY.getValue()) return DRY;
if(v==BAKED.getValue()) return BAKED;
return INVALID_VALUE;
}
public static String GetLocalizedPrefix(PotteryState state){
if(state==MOLDED) return StatCollector.translateToLocal("pottery.fbs.molded");
if(state==DRY) return StatCollector.translateToLocal("pottery.fbs.dry");
return "";
}
}
public static enum PotterySize{
SMALL(0), MEDIUM(1), LARGE(2);
PotterySize(int v){ value=(byte)v; }
private byte value;
public byte getValue(){ return value; }
public static PotterySize Get(int v){
if(v==SMALL.getValue()) return SMALL;
if(v==LARGE.getValue()) return LARGE;
return MEDIUM;
}
public static String GetLocalizedPrefix(PotterySize size){
String str;
switch (size){
case SMALL: str= StatCollector.translateToLocal("pottery.fbs.small"); break;
case LARGE: str=StatCollector.translateToLocal("pottery.fbs.large"); break;
default: str=""; break;
}
return str;
}
}
public static enum PotteryGrade{
BAD(0), NORMAL(1), GOOD(2), GREAT(3), SOULFUL(4);
PotteryGrade(int v){ value=(byte)v; }
private byte value;
public byte getValue(){ return value; }
public static PotteryGrade Get(int v){
if(v==BAD.getValue()) return BAD;
if(v==GOOD.getValue()) return GOOD;
if(v==GREAT.getValue()) return GREAT;
if(v==SOULFUL.getValue()) return SOULFUL;
return NORMAL;
}
public static String GetLocalizedPrefix(PotteryGrade grade){
String str;
switch (grade){
case BAD: str=StatCollector.translateToLocal("pottery.fbs.bad"); break;
case GOOD: str=StatCollector.translateToLocal("pottery.fbs.good"); break;
case GREAT: str=StatCollector.translateToLocal("pottery.fbs.great"); break;
case SOULFUL: str=StatCollector.translateToLocal("pottery.fbs.soulful"); break;
default: str=""; break;
}
return str;
}
}
}
|