94 lines
3.8 KiB
Java
94 lines
3.8 KiB
Java
/*
|
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
|
* Copyright (C) 2016-2023 ViaVersion and contributors
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data;
|
|
|
|
import com.google.common.collect.BiMap;
|
|
import com.google.common.collect.HashBiMap;
|
|
import java.util.Optional;
|
|
|
|
public class SpawnEggRewriter {
|
|
private static final BiMap<String, Integer> spawnEggs = HashBiMap.create();
|
|
|
|
static {
|
|
// Class yz.java in 18w14b
|
|
// Register spawn eggs (generated with GT)
|
|
registerSpawnEgg("minecraft:bat");
|
|
registerSpawnEgg("minecraft:blaze");
|
|
registerSpawnEgg("minecraft:cave_spider");
|
|
registerSpawnEgg("minecraft:chicken");
|
|
registerSpawnEgg("minecraft:cow");
|
|
registerSpawnEgg("minecraft:creeper");
|
|
registerSpawnEgg("minecraft:donkey");
|
|
registerSpawnEgg("minecraft:elder_guardian");
|
|
registerSpawnEgg("minecraft:enderman");
|
|
registerSpawnEgg("minecraft:endermite");
|
|
registerSpawnEgg("minecraft:evocation_illager");
|
|
registerSpawnEgg("minecraft:ghast");
|
|
registerSpawnEgg("minecraft:guardian");
|
|
registerSpawnEgg("minecraft:horse");
|
|
registerSpawnEgg("minecraft:husk");
|
|
registerSpawnEgg("minecraft:llama");
|
|
registerSpawnEgg("minecraft:magma_cube");
|
|
registerSpawnEgg("minecraft:mooshroom");
|
|
registerSpawnEgg("minecraft:mule");
|
|
registerSpawnEgg("minecraft:ocelot");
|
|
|
|
registerSpawnEgg("minecraft:parrot");
|
|
registerSpawnEgg("minecraft:pig");
|
|
registerSpawnEgg("minecraft:polar_bear");
|
|
registerSpawnEgg("minecraft:rabbit");
|
|
registerSpawnEgg("minecraft:sheep");
|
|
registerSpawnEgg("minecraft:shulker");
|
|
registerSpawnEgg("minecraft:silverfish");
|
|
registerSpawnEgg("minecraft:skeleton");
|
|
registerSpawnEgg("minecraft:skeleton_horse");
|
|
registerSpawnEgg("minecraft:slime");
|
|
registerSpawnEgg("minecraft:spider");
|
|
registerSpawnEgg("minecraft:squid");
|
|
registerSpawnEgg("minecraft:stray");
|
|
registerSpawnEgg("minecraft:vex");
|
|
registerSpawnEgg("minecraft:villager");
|
|
registerSpawnEgg("minecraft:vindication_illager");
|
|
registerSpawnEgg("minecraft:witch");
|
|
registerSpawnEgg("minecraft:wither_skeleton");
|
|
registerSpawnEgg("minecraft:wolf");
|
|
registerSpawnEgg("minecraft:zombie");
|
|
registerSpawnEgg("minecraft:zombie_horse");
|
|
registerSpawnEgg("minecraft:zombie_pigman");
|
|
registerSpawnEgg("minecraft:zombie_villager");
|
|
}
|
|
|
|
private static void registerSpawnEgg(String key) {
|
|
spawnEggs.put(key, spawnEggs.size());
|
|
}
|
|
|
|
// Make it a non-existing block id
|
|
public static int getSpawnEggId(String entityIdentifier) {
|
|
// Fallback to bat
|
|
if (!spawnEggs.containsKey(entityIdentifier))
|
|
//return 25100288;
|
|
return -1;
|
|
return (383 << 16 | (spawnEggs.get(entityIdentifier) & 0xFFFF));
|
|
}
|
|
|
|
public static Optional<String> getEntityId(int spawnEggId) {
|
|
if (spawnEggId >> 16 != 383) return Optional.empty();
|
|
return Optional.ofNullable(spawnEggs.inverse().get(spawnEggId & 0xFFFF));
|
|
}
|
|
}
|