= 创作分享 =
编程开发
为啥物品耐久最大是32767?
sxjeru

为啥物品耐久最大是32767?

 关闭
sxjeru 于 2016-5-31 20:51 ( 7年前 ) [复制链接] [显示全部楼层] [打印]
ueyudicd
GregoriusT 发表于 2017-10-28 19:58
问一下,附加值、metadata、耐久值是一个东西吗?如果不是那应该怎么区分

meta是ItemStack的一个不能直接访问的field,然后哦Item将这个封包成了damage【1】;
附加值这个概念在源码中不体现,就这样……

事实上MC有些代码很恶心的,因为把很多概念混杂在了一起,弄得乱七八糟的;

如果只是要玩游戏(甚至是魔改,写资源包,汉化什么的),只需要知道“damage”是经过物品处理过一个区分同id物品的值;“meta”是用来区分同id方块的值就可以了【2】。

【1】:例如GT的耐久不是原版的那套系统,他自己写了一套;
【2】:其实我觉得meta和damage的区别的存在是一个历史遗留问题,不过现在也不重要了;
发表于 2017-11-5 13:46:54 | 显示全部楼层

回复 | 举报

小晓尘fearr623
ic2的转子就是这样,很迷我也没找到解决办法,总不能把转子ban了吧

点评

这回复是什么情况(?)另外,洛阳铲警告  发表于 2019-7-1 13:33

评分

参与人数 1RF -2 收起 理由
封兽·鵺 -2 #301 禁止挖坟

查看全部评分

发表于 2019-7-1 12:29:49 | 显示全部楼层

回复 | 举报

Irdium
中兴安岭 发表于 2017-2-19 18:23
现在这个帖子可以改成“为啥物品耐久最大是2147483647”了233,不过真的有耐久超过这个值的物品……这该怎 ...

有的,gt吊炸天电池是2∧64-1,不过那不是损伤值,那只是单纯的一个数组
发表于 2019-7-17 22:23:42 | 显示全部楼层

回复 | 举报

uu_matter
龙之进化:8级能量核心储能:2^63-1RF
Ender IO大法好!
发表于 2019-8-14 06:47:14 | 显示全部楼层

回复 | 举报

shaokeyibb
因为Java int值最高只能是32767.....
发表于 2019-10-5 22:19:40 | 显示全部楼层

回复 | 举报

洞穴夜莺
shaokeyibb 发表于 2019-10-5 22:19
因为Java int值最高只能是32767.....
  1. jshell> Integer.MAX_VALUE
  2. $1 ==> 2147483647
复制代码

怎么说?
发表于 2020-8-22 10:50:44 | 显示全部楼层

回复 | 举报

赤刃

32767是16位整型数(int16)能表达的最大数,而你这个是32位的
路过的请投喂辣条,谢谢 /w\
发表于 2020-8-29 00:43:10 | 显示全部楼层

回复 | 举报

洞穴夜莺
赤刃泉润CQR 发表于 2020-8-29 00:43
32767是16位整型数(int16)能表达的最大数,而你这个是32位的

对呀,所以是short不是int嘛
发表于 2020-10-5 16:25:40 | 显示全部楼层

回复 | 举报

自动化学院院长
解释一下,2147483647是2^31-1,即 2^(32-1) - 1,所以是32位整数的最大值,也是32位操作系统中最大的符号型整型最大值。
之后说32767,是较老电脑的限制,以前有16位电脑,16位整数最大值是 2^(16-1) - 1 = 2^15 - 1 = 32768 - 1 = 32767,所以最早的时候物品耐久最大时32767.
发表于 2021-3-6 20:41:25 | 显示全部楼层

回复 | 举报

三聚氟氰
应该是在配置文件里有吧,一个极限,就像高度限制一样
发表于 2021-3-14 14:27:56 | 显示全部楼层

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表