Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-27 08:30:09 +01:00
Fixes potion data conversion from 1.8 to 1.9
Dieser Commit ist enthalten in:
Ursprung
e2585db350
Commit
e3510d01d6
@ -213,11 +213,9 @@ public class ItemRewriter {
|
|||||||
item.setId((short) 438); // splash id
|
item.setId((short) 438); // splash id
|
||||||
item.setData((short) (item.getData() - 8192));
|
item.setData((short) (item.getData() - 8192));
|
||||||
}
|
}
|
||||||
if (POTION_ID_TO_NAME.containsKey((int) item.getData())) {
|
String name = potionNameFromDamage(item.getData());
|
||||||
String name = POTION_ID_TO_NAME.get((int) item.getData());
|
StringTag potion = new StringTag("Potion", "minecraft:" + name);
|
||||||
StringTag potion = new StringTag("Potion", "minecraft:" + name);
|
tag.put(potion);
|
||||||
tag.put(potion);
|
|
||||||
}
|
|
||||||
item.setTag(tag);
|
item.setTag(tag);
|
||||||
item.setData((short) 0);
|
item.setData((short) 0);
|
||||||
}
|
}
|
||||||
@ -245,10 +243,78 @@ public class ItemRewriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String potionNameFromDamage(short damage) {
|
||||||
|
String cached = POTION_ID_TO_NAME.get((int) damage);
|
||||||
|
if(cached != null) {
|
||||||
|
return cached;
|
||||||
|
}
|
||||||
|
|
||||||
|
int effect = damage & 0xF;
|
||||||
|
int name = damage & 0x3F;
|
||||||
|
boolean enhanced = (damage & 0x20) > 0;
|
||||||
|
boolean extended = (damage & 0x40) > 0;
|
||||||
|
boolean drinkable = (damage & 0x2000) > 0;
|
||||||
|
//boolean splash = (damage & 0x4000) > 0;
|
||||||
|
|
||||||
|
boolean canEnhance = true;
|
||||||
|
boolean canExtend = true;
|
||||||
|
|
||||||
|
String id;
|
||||||
|
switch (effect) {
|
||||||
|
case 1: id="regeneration"; break;
|
||||||
|
case 2: id="swiftness"; break;
|
||||||
|
case 3: id="fire_resistance"; canEnhance = false; break;
|
||||||
|
case 4: id="poison"; break;
|
||||||
|
case 5: id="healing"; canExtend = false; break;
|
||||||
|
case 6: id="night_vision"; canEnhance = false; break;
|
||||||
|
|
||||||
|
case 8: id="weakness"; canEnhance = false; break;
|
||||||
|
case 9: id="strength"; break;
|
||||||
|
case 10: id="slowness"; canEnhance = false; break;
|
||||||
|
case 11: id="leaping"; break;
|
||||||
|
case 12: id="harming"; canExtend=false; break;
|
||||||
|
case 13: id="water_breathing"; canEnhance = false; break;
|
||||||
|
case 14: id="invisibility"; canEnhance = false; break;
|
||||||
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
switch (name) {
|
||||||
|
case 16: id="awkward"; break;
|
||||||
|
case 32: id="thick"; break;
|
||||||
|
default:
|
||||||
|
if(drinkable) {
|
||||||
|
id = "mundane";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
id = "water";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(effect > 0) {
|
||||||
|
if(canEnhance && enhanced) {
|
||||||
|
id = "strong_" + id;
|
||||||
|
}
|
||||||
|
else if(canExtend && extended) {
|
||||||
|
id = "long_" + id;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if(splash)
|
||||||
|
// potion.splash();
|
||||||
|
}
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
public static int getNewEffectID(int oldID) {
|
public static int getNewEffectID(int oldID) {
|
||||||
if (oldID >= 16384) {
|
if (oldID >= 16384) {
|
||||||
oldID -= 8192;
|
oldID -= 8192;
|
||||||
}
|
}
|
||||||
|
if(POTION_INDEX.containsKey(oldID)) {
|
||||||
|
return POTION_INDEX.get(oldID);
|
||||||
|
}
|
||||||
|
|
||||||
|
oldID = POTION_NAME_TO_ID.get(potionNameFromDamage((short)oldID));
|
||||||
return POTION_INDEX.containsKey(oldID) ? POTION_INDEX.get(oldID) : 0;
|
return POTION_INDEX.containsKey(oldID) ? POTION_INDEX.get(oldID) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren