mirror of
https://gitlab.com/cable-mc/cobblemon.git
synced 2026-10-20 14:16:26 -04:00
chore: resolve conflicts
# Conflicts: # common/src/main/kotlin/com/cobblemon/mod/common/pokemon/properties/PropertiesCompletionProvider.kt
This commit is contained in:
+62
-12
@@ -3,36 +3,86 @@
|
|||||||
|
|
||||||
### Additions
|
### Additions
|
||||||
|
|
||||||
### Pokémon Added
|
### Cries added/updated for the following Pokémon
|
||||||
#### Generation 4
|
- Hoppip
|
||||||
|
- Skiploom
|
||||||
#### Generation 5
|
- Jumpluff
|
||||||
|
- Houndour
|
||||||
#### Generation 6
|
- Houndoom
|
||||||
|
- Wurmple
|
||||||
#### Generation 7
|
- Silcoon
|
||||||
|
- Beautifly
|
||||||
#### Generation 8
|
- Cascoon
|
||||||
|
- Dustox
|
||||||
#### Generation 9
|
- Surskit
|
||||||
|
- Masquerain
|
||||||
|
- Torkoal
|
||||||
|
- Starly
|
||||||
|
- Staravia
|
||||||
|
- Staraptor
|
||||||
|
- Combee
|
||||||
|
- Vespiquen
|
||||||
|
- Dusknoir
|
||||||
|
- Helioptile
|
||||||
|
- Heliolisk
|
||||||
|
- Grubbin
|
||||||
|
- Charjabug
|
||||||
|
- Vikavolt
|
||||||
|
- Applin (updated)
|
||||||
|
- Flapple (updated)
|
||||||
|
- Appletun
|
||||||
|
- Runerigus
|
||||||
|
- Dipplin
|
||||||
|
|
||||||
### Model updates for the following Pokémon
|
### Model updates for the following Pokémon
|
||||||
|
|
||||||
### Animation updates for the following Pokémon
|
### Animation updates for the following Pokémon
|
||||||
|
- Vikavolt
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
- Changed the Misc icon in the Campfire Pot Recipe Book to Health Candy
|
||||||
|
- Moved EXP Candies from the Medicine recipe book category to the Misc category
|
||||||
|
- Removed Dynamic Lights data from the Magmarizer item for consistency with the block
|
||||||
|
- Added `doPokemonPredation` gamerule, which controls aggressiveness of Pokémon with `hate_entity` brain task defined
|
||||||
|
- Added `predation_chance` server config value, which controls the possibility of attacking the hated entity found by `hate_entity` brain task
|
||||||
|
- Prehistoric Eroded Pillar generates slightly more frequently
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- Fixed datapacks with item interaction evolutions that don't specify an item crashing the world on load.
|
- Fixed datapacks with item interaction evolutions that don't specify an item crashing the world on load.
|
||||||
- Fixed the Pokédex evolution tree crashing when a datapack's dex entry is missing an evolution's form.
|
- Fixed the Pokédex evolution tree crashing when a datapack's dex entry is missing an evolution's form.
|
||||||
- Fixed the Pokédex evolution tree crashing with a stack overflow on evolutions that loop back on themselves.
|
- Fixed the Pokédex evolution tree crashing with a stack overflow on evolutions that loop back on themselves.
|
||||||
|
- Fixed the Pokédex evolution tree crashing when looking at a dex that is not part of the "National Dex" aggregate.
|
||||||
|
- Fixed evolution trees not building properly when a Pokémon has several Pokédex entries for different regions.
|
||||||
- Fixed form-changing evolutions sometimes resolving to the source form in the Pokédex evolution tree.
|
- Fixed form-changing evolutions sometimes resolving to the source form in the Pokédex evolution tree.
|
||||||
- Broken datapack evolutions are now logged and skipped in the Pokédex evolution tree instead of crashing.
|
- Broken datapack evolutions are now logged and skipped in the Pokédex evolution tree instead of crashing.
|
||||||
- Fixed the `alpha` property having no tab completion in commands such as `/pokespawn`, `/pokegive` and `/pokeedit`, and added the missing `dmax_level`, `gmax_factor` and `tradable` aliases to tab completion
|
- Fixed the `alpha` property having no tab completion in commands such as `/pokespawn`, `/pokegive` and `/pokeedit`, and added the missing `dmax_level`, `gmax_factor` and `tradable` aliases to tab completion
|
||||||
|
- Fixed friendship booster items not being recognised as such
|
||||||
|
- Fixed conflicts with other mods that would make use of recipe books in certain ways (Farmer's Delight Cooking Pot)
|
||||||
|
- Fixed Pokémon battles stalling when a sidemod cancels the `THROWN_POKEBALL_HIT` hit event
|
||||||
|
- Fixed choice feature tab completion in `spawnpokemon/pokegive/pokeedit` commands
|
||||||
|
- Fixed MoLang that's targeting players intermittedly failing when they have died, needing them to relog
|
||||||
|
- Fixed a NeoForge bug where none of the Cobblemon plants/berries could be placed into pots
|
||||||
|
- Fixed party overlay not hiding when the player opens the Pokédex scanner
|
||||||
|
- Added compat for AppleSkin
|
||||||
|
- Fixed some display names having unintended font colours
|
||||||
|
- Fixed `hate_entity` task focusing on its own entity
|
||||||
|
- Thus enabled deadly warfare between Zangoose and Seviper
|
||||||
|
- Prehistoric Frozen Pond, Prehistoric Frozen Spike, and Prehistoric Lush Den now generate
|
||||||
|
- Fixed Frogadier floating in its battle_idle animation
|
||||||
|
- Fixed absence or incorrect mergers in spawning conditions, making max height/depth of conditions to use the min value instead
|
||||||
|
- Added stricter riding checks on server side to prevent possible packet forgery when player tries to ride pokemon
|
||||||
|
- Fixed Pokémon cries and animation sounds played from GUIs, such as the starter selection screen and the Pokédex, being tied to the Master volume slider instead of Friendly Creatures
|
||||||
|
|
||||||
### Developer
|
### Developer
|
||||||
|
- Bumped NeoForge to `21.1.195` to get access to MixinExtras `0.5` and the expressions annotation
|
||||||
|
- New Platform Event `PLAYER_RESPAWN` which is fired when a player respawns (either through death or returning from the end)
|
||||||
|
- Platform Events `SERVER_PLAYER_TICK_PRE` and `SERVER_PLAYER_TICK_POST` no longer fire when the player is dead
|
||||||
|
- it is now tied much closer to the actual entity rather than the player (or their connection)
|
||||||
|
|
||||||
### Molang & Datapacks
|
### Molang & Datapacks
|
||||||
|
- Fixed `q.pokemon.nature` returning class instance instead of proper string value (`cobblemon:adamant`)
|
||||||
|
- Fixed `q.entity.is_looking_at` result being always `1` for whatever entity passed as target
|
||||||
|
- Added hate chance optional parameter to `hate_entity` task. `1.0` will make an entity always attack the target
|
||||||
|
|
||||||
### Localization
|
### Localization
|
||||||
- Updated translations for:
|
- Updated translations for:
|
||||||
|
|||||||
+7
-17
@@ -16,6 +16,7 @@ import com.cobblemon.mod.common.item.crafting.CookingPotShapelessRecipe;
|
|||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
import net.minecraft.client.ClientRecipeBook;
|
import net.minecraft.client.ClientRecipeBook;
|
||||||
import net.minecraft.client.RecipeBookCategories;
|
import net.minecraft.client.RecipeBookCategories;
|
||||||
import net.minecraft.client.gui.screens.recipebook.RecipeCollection;
|
import net.minecraft.client.gui.screens.recipebook.RecipeCollection;
|
||||||
@@ -63,23 +64,12 @@ public abstract class ClientRecipeBookMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "setupCollections", at = @At("RETURN"))
|
@Inject(method = "setupCollections",
|
||||||
private void addCustomAggregateCategories(Iterable<RecipeHolder<?>> recipes, RegistryAccess registryAccess, CallbackInfo ci) {
|
at = @At(
|
||||||
Map<RecipeBookCategories, List<List<RecipeHolder<?>>>> map = categorizeAndGroupRecipes(recipes);
|
value = "INVOKE",
|
||||||
Map<RecipeBookCategories, List<RecipeCollection>> map2 = Maps.newHashMap();
|
target = "Lcom/google/common/collect/ImmutableMap;copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;"
|
||||||
ImmutableList.Builder<RecipeCollection> builder = ImmutableList.builder();
|
))
|
||||||
|
private void addCustomAggregateCategories(Iterable<RecipeHolder<?>> recipes, RegistryAccess registryAccess, CallbackInfo ci, @Local(name = "map2") Map<RecipeBookCategories, List<RecipeCollection>> map2) {
|
||||||
map.forEach((recipeBookCategories, list) -> {
|
|
||||||
List<RecipeCollection> collections = list.stream()
|
|
||||||
.map(listx -> new RecipeCollection(registryAccess, listx))
|
|
||||||
.peek(builder::add)
|
|
||||||
.collect(ImmutableList.toImmutableList());
|
|
||||||
map2.put(recipeBookCategories, collections);
|
|
||||||
});
|
|
||||||
RecipeBookCategories.AGGREGATE_CATEGORIES.forEach((recipeBookCategories, list) -> map2.put(recipeBookCategories, (List) list.stream().flatMap((recipeBookCategoriesx) -> ((List) map2.getOrDefault(recipeBookCategoriesx, ImmutableList.of())).stream()).collect(ImmutableList.toImmutableList())));
|
|
||||||
CobblemonRecipeCategories.Companion.getCustomAggregateCategories().forEach((recipeBookCategories, list) -> map2.put(recipeBookCategories, (List) list.stream().flatMap((recipeBookCategoriesx) -> ((List) map2.getOrDefault(recipeBookCategoriesx, ImmutableList.of())).stream()).collect(ImmutableList.toImmutableList())));
|
CobblemonRecipeCategories.Companion.getCustomAggregateCategories().forEach((recipeBookCategories, list) -> map2.put(recipeBookCategories, (List) list.stream().flatMap((recipeBookCategoriesx) -> ((List) map2.getOrDefault(recipeBookCategoriesx, ImmutableList.of())).stream()).collect(ImmutableList.toImmutableList())));
|
||||||
|
|
||||||
this.collectionsByTab = ImmutableMap.copyOf(map2);
|
|
||||||
this.allCollections = builder.build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
-43
@@ -9,55 +9,25 @@
|
|||||||
package com.cobblemon.mod.common.mixin.client;
|
package com.cobblemon.mod.common.mixin.client;
|
||||||
|
|
||||||
import com.cobblemon.mod.common.CobblemonRecipeCategories;
|
import com.cobblemon.mod.common.CobblemonRecipeCategories;
|
||||||
import net.minecraft.client.ClientRecipeBook;
|
import com.llamalad7.mixinextras.expression.Definition;
|
||||||
import net.minecraft.client.Minecraft;
|
import com.llamalad7.mixinextras.expression.Expression;
|
||||||
|
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
import net.minecraft.client.RecipeBookCategories;
|
import net.minecraft.client.RecipeBookCategories;
|
||||||
import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent;
|
import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent;
|
||||||
import net.minecraft.client.gui.screens.recipebook.RecipeBookPage;
|
|
||||||
import net.minecraft.client.gui.screens.recipebook.RecipeBookTabButton;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(RecipeBookComponent.class)
|
@Mixin(RecipeBookComponent.class)
|
||||||
public class RecipeBookComponentMixin {
|
public class RecipeBookComponentMixin {
|
||||||
|
@Definition(id = "recipeBookCategories", local = @Local(name = "recipeBookCategories"))
|
||||||
@Shadow private ClientRecipeBook book;
|
@Definition(id = "FURNACE_SEARCH", field = "Lnet/minecraft/client/RecipeBookCategories;FURNACE_SEARCH:Lnet/minecraft/client/RecipeBookCategories;")
|
||||||
|
@Expression("recipeBookCategories != FURNACE_SEARCH")
|
||||||
@Shadow protected Minecraft minecraft;
|
@ModifyExpressionValue(
|
||||||
|
method = "updateTabs",
|
||||||
@Shadow private int width;
|
at = @At(value = "MIXINEXTRAS:EXPRESSION")
|
||||||
|
)
|
||||||
@Shadow private int xOffset;
|
private boolean notCookingPotSearch(boolean original, @Local(name = "recipeBookCategories") RecipeBookCategories recipeBookCategories) {
|
||||||
|
return original && recipeBookCategories != CobblemonRecipeCategories.COOKING_POT_SEARCH.toVanillaCategory();
|
||||||
@Shadow private int height;
|
|
||||||
|
|
||||||
@Shadow @Final private RecipeBookPage recipeBookPage;
|
|
||||||
|
|
||||||
@Inject(method = "updateTabs", at = @At("HEAD"), cancellable = true)
|
|
||||||
private void customUpdateTabs(CallbackInfo ci) {
|
|
||||||
RecipeBookComponent instance = (RecipeBookComponent) (Object) this;
|
|
||||||
int i = (width - 147) / 2 - xOffset - 30;
|
|
||||||
int j = (height - 166) / 2 + 3;
|
|
||||||
int k = 27;
|
|
||||||
int l = 0;
|
|
||||||
|
|
||||||
for (RecipeBookTabButton recipeBookTabButton : instance.tabButtons) {
|
|
||||||
RecipeBookCategories recipeBookCategories = recipeBookTabButton.getCategory();
|
|
||||||
if (recipeBookCategories != RecipeBookCategories.CRAFTING_SEARCH && recipeBookCategories != RecipeBookCategories.FURNACE_SEARCH && recipeBookCategories != CobblemonRecipeCategories.COOKING_POT_SEARCH.toVanillaCategory()) {
|
|
||||||
if (recipeBookTabButton.updateVisibility(book)) {
|
|
||||||
recipeBookTabButton.setPosition(i, j + 27 * l++);
|
|
||||||
recipeBookTabButton.startAnimation(minecraft);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
recipeBookTabButton.visible = true;
|
|
||||||
recipeBookTabButton.setPosition(i, j + k * l++);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ci.cancel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,6 +260,9 @@ object Cobblemon {
|
|||||||
RequestManager.onLogoff(it.player)
|
RequestManager.onLogoff(it.player)
|
||||||
serverPlayerStructs.remove(it.player.uuid)
|
serverPlayerStructs.remove(it.player.uuid)
|
||||||
}
|
}
|
||||||
|
PlatformEvents.PLAYER_RESPAWN.subscribe {
|
||||||
|
serverPlayerStructs.remove(it.player.uuid)
|
||||||
|
}
|
||||||
PlatformEvents.PLAYER_DEATH.subscribe {
|
PlatformEvents.PLAYER_DEATH.subscribe {
|
||||||
PCLinkManager.removeLink(it.player.uuid)
|
PCLinkManager.removeLink(it.player.uuid)
|
||||||
battleRegistry.getBattleByParticipatingPlayer(it.player)?.stop()
|
battleRegistry.getBattleByParticipatingPlayer(it.player)?.stop()
|
||||||
|
|||||||
@@ -845,54 +845,35 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
|||||||
@JvmField
|
@JvmField
|
||||||
val PEP_UP_FLOWER = this.create("pep_up_flower", FlowerBlock(MobEffects.LEVITATION, 10F, BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).pushReaction(PushReaction.DESTROY)))
|
val PEP_UP_FLOWER = this.create("pep_up_flower", FlowerBlock(MobEffects.LEVITATION, 10F, BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).pushReaction(PushReaction.DESTROY)))
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PEP_UP_FLOWER = this.create("potted_pep_up_flower", BlocksInvoker.createFlowerPotBlock(PEP_UP_FLOWER))
|
|
||||||
@JvmField
|
|
||||||
val HEARTY_GRAINS = this.create("hearty_grains", HeartyGrainsBlock(BlockBehaviour.Properties.of().pushReaction(PushReaction.DESTROY).ignitedByLava().mapColor(MapColor.PLANT).noCollission().randomTicks().instabreak()))
|
val HEARTY_GRAINS = this.create("hearty_grains", HeartyGrainsBlock(BlockBehaviour.Properties.of().pushReaction(PushReaction.DESTROY).ignitedByLava().mapColor(MapColor.PLANT).noCollission().randomTicks().instabreak()))
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val GALARICA_NUT_BUSH = this.create("galarica_nut_bush", NutBushBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().sound(SoundType.SWEET_BERRY_BUSH).pushReaction(PushReaction.DESTROY)))
|
val GALARICA_NUT_BUSH = this.create("galarica_nut_bush", NutBushBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).randomTicks().noCollission().sound(SoundType.SWEET_BERRY_BUSH).pushReaction(PushReaction.DESTROY)))
|
||||||
|
|
||||||
@JvmField
|
|
||||||
val POTTED_RED_APRICORN_SAPLING = this.create("potted_red_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(RED_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_YELLOW_APRICORN_SAPLING = this.create("potted_yellow_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(YELLOW_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_GREEN_APRICORN_SAPLING = this.create("potted_green_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(GREEN_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_BLUE_APRICORN_SAPLING = this.create("potted_blue_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(BLUE_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_PINK_APRICORN_SAPLING = this.create("potted_pink_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(PINK_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_BLACK_APRICORN_SAPLING = this.create("potted_black_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(BLACK_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_WHITE_APRICORN_SAPLING = this.create("potted_white_apricorn_sapling", BlocksInvoker.createFlowerPotBlock(WHITE_APRICORN_SAPLING))
|
|
||||||
@JvmField
|
|
||||||
val POTTED_SACCHARINE_SAPLING = this.create("potted_saccharine_sapling", BlocksInvoker.createFlowerPotBlock(SACCHARINE_SAPLING))
|
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val RED_MINT_LEAF_LITTER = this.mintLitter("red_mint_leaf_litter", MapColor.COLOR_RED)
|
val RED_MINT_LEAF_LITTER = this.mintLitter("red_mint_leaf_litter", MapColor.COLOR_RED)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_RED_MINT = this.pottedPlant("potted_red_mint", RED_MINT_LEAF_LITTER)
|
val POTTED_RED_MINT = this.flowerPot("potted_red_mint", RED_MINT_LEAF_LITTER)
|
||||||
@JvmField
|
@JvmField
|
||||||
val BLUE_MINT_LEAF_LITTER = this.mintLitter("blue_mint_leaf_litter", MapColor.COLOR_BLUE)
|
val BLUE_MINT_LEAF_LITTER = this.mintLitter("blue_mint_leaf_litter", MapColor.COLOR_BLUE)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_BLUE_MINT = this.pottedPlant("potted_blue_mint", BLUE_MINT_LEAF_LITTER)
|
val POTTED_BLUE_MINT = this.flowerPot("potted_blue_mint", BLUE_MINT_LEAF_LITTER)
|
||||||
@JvmField
|
@JvmField
|
||||||
val CYAN_MINT_LEAF_LITTER = this.mintLitter("cyan_mint_leaf_litter", MapColor.COLOR_CYAN)
|
val CYAN_MINT_LEAF_LITTER = this.mintLitter("cyan_mint_leaf_litter", MapColor.COLOR_CYAN)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CYAN_MINT = this.pottedPlant("potted_cyan_mint", CYAN_MINT_LEAF_LITTER)
|
val POTTED_CYAN_MINT = this.flowerPot("potted_cyan_mint", CYAN_MINT_LEAF_LITTER)
|
||||||
@JvmField
|
@JvmField
|
||||||
val PINK_MINT_LEAF_LITTER = this.mintLitter("pink_mint_leaf_litter", MapColor.COLOR_PINK)
|
val PINK_MINT_LEAF_LITTER = this.mintLitter("pink_mint_leaf_litter", MapColor.COLOR_PINK)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PINK_MINT = this.pottedPlant("potted_pink_mint", PINK_MINT_LEAF_LITTER)
|
val POTTED_PINK_MINT = this.flowerPot("potted_pink_mint", PINK_MINT_LEAF_LITTER)
|
||||||
@JvmField
|
@JvmField
|
||||||
val GREEN_MINT_LEAF_LITTER = this.mintLitter("green_mint_leaf_litter", MapColor.COLOR_GREEN)
|
val GREEN_MINT_LEAF_LITTER = this.mintLitter("green_mint_leaf_litter", MapColor.COLOR_GREEN)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_GREEN_MINT = this.pottedPlant("potted_green_mint", GREEN_MINT_LEAF_LITTER)
|
val POTTED_GREEN_MINT = this.flowerPot("potted_green_mint", GREEN_MINT_LEAF_LITTER)
|
||||||
@JvmField
|
@JvmField
|
||||||
val WHITE_MINT_LEAF_LITTER = this.mintLitter("white_mint_leaf_litter", MapColor.SNOW)
|
val WHITE_MINT_LEAF_LITTER = this.mintLitter("white_mint_leaf_litter", MapColor.SNOW)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_WHITE_MINT = this.pottedPlant("potted_white_mint", WHITE_MINT_LEAF_LITTER)
|
val POTTED_WHITE_MINT = this.flowerPot("potted_white_mint", WHITE_MINT_LEAF_LITTER)
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val LOBAILA = this.create("lobaila", LobailaFlowerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY)))
|
val LOBAILA = this.create("lobaila", LobailaFlowerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.PLANT).noCollission().instabreak().sound(SoundType.GRASS).offsetType(BlockBehaviour.OffsetType.XZ).ignitedByLava().pushReaction(PushReaction.DESTROY)))
|
||||||
@@ -1104,145 +1085,163 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
|||||||
//val BINDING_SOIL = this.create("binding_soil", BindingSoilBlock(BlockBehaviour.Properties.of()))
|
//val BINDING_SOIL = this.create("binding_soil", BindingSoilBlock(BlockBehaviour.Properties.of()))
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_AGUAV_BERRY = this.create("potted_aguav_berry", BlocksInvoker.createFlowerPotBlock(AGUAV_BERRY))
|
val POTTED_AGUAV_BERRY = this.flowerPot("potted_aguav_berry", AGUAV_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_APICOT_BERRY = this.create("potted_apicot_berry", BlocksInvoker.createFlowerPotBlock(APICOT_BERRY))
|
val POTTED_APICOT_BERRY = this.flowerPot("potted_apicot_berry", APICOT_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_ASPEAR_BERRY = this.create("potted_aspear_berry", BlocksInvoker.createFlowerPotBlock(ASPEAR_BERRY))
|
val POTTED_ASPEAR_BERRY = this.flowerPot("potted_aspear_berry", ASPEAR_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_BABIRI_BERRY = this.create("potted_babiri_berry", BlocksInvoker.createFlowerPotBlock(BABIRI_BERRY))
|
val POTTED_BABIRI_BERRY = this.flowerPot("potted_babiri_berry", BABIRI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_BELUE_BERRY = this.create("potted_belue_berry", BlocksInvoker.createFlowerPotBlock(BELUE_BERRY))
|
val POTTED_BELUE_BERRY = this.flowerPot("potted_belue_berry", BELUE_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_BLUK_BERRY = this.create("potted_bluk_berry", BlocksInvoker.createFlowerPotBlock(BLUK_BERRY))
|
val POTTED_BLUK_BERRY = this.flowerPot("potted_bluk_berry", BLUK_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CHARTI_BERRY = this.create("potted_charti_berry", BlocksInvoker.createFlowerPotBlock(CHARTI_BERRY))
|
val POTTED_CHARTI_BERRY = this.flowerPot("potted_charti_berry", CHARTI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CHERI_BERRY = this.create("potted_cheri_berry", BlocksInvoker.createFlowerPotBlock(CHERI_BERRY))
|
val POTTED_CHERI_BERRY = this.flowerPot("potted_cheri_berry", CHERI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CHESTO_BERRY = this.create("potted_chesto_berry", BlocksInvoker.createFlowerPotBlock(CHESTO_BERRY))
|
val POTTED_CHESTO_BERRY = this.flowerPot("potted_chesto_berry", CHESTO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CHILAN_BERRY = this.create("potted_chilan_berry", BlocksInvoker.createFlowerPotBlock(CHILAN_BERRY))
|
val POTTED_CHILAN_BERRY = this.flowerPot("potted_chilan_berry", CHILAN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CHOPLE_BERRY = this.create("potted_chople_berry", BlocksInvoker.createFlowerPotBlock(CHOPLE_BERRY))
|
val POTTED_CHOPLE_BERRY = this.flowerPot("potted_chople_berry", CHOPLE_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_COBA_BERRY = this.create("potted_coba_berry", BlocksInvoker.createFlowerPotBlock(COBA_BERRY))
|
val POTTED_COBA_BERRY = this.flowerPot("potted_coba_berry", COBA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_COLBUR_BERRY = this.create("potted_colbur_berry", BlocksInvoker.createFlowerPotBlock(COLBUR_BERRY))
|
val POTTED_COLBUR_BERRY = this.flowerPot("potted_colbur_berry", COLBUR_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CORNN_BERRY = this.create("potted_cornn_berry", BlocksInvoker.createFlowerPotBlock(CORNN_BERRY))
|
val POTTED_CORNN_BERRY = this.flowerPot("potted_cornn_berry", CORNN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_CUSTAP_BERRY = this.create("potted_custap_berry", BlocksInvoker.createFlowerPotBlock(CUSTAP_BERRY))
|
val POTTED_CUSTAP_BERRY = this.flowerPot("potted_custap_berry", CUSTAP_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_DURIN_BERRY = this.create("potted_durin_berry", BlocksInvoker.createFlowerPotBlock(DURIN_BERRY))
|
val POTTED_DURIN_BERRY = this.flowerPot("potted_durin_berry", DURIN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_EGGANT_BERRY = this.create("potted_eggant_berry", BlocksInvoker.createFlowerPotBlock(EGGANT_BERRY))
|
val POTTED_EGGANT_BERRY = this.flowerPot("potted_eggant_berry", EGGANT_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_ENIGMA_BERRY = this.create("potted_enigma_berry", BlocksInvoker.createFlowerPotBlock(ENIGMA_BERRY))
|
val POTTED_ENIGMA_BERRY = this.flowerPot("potted_enigma_berry", ENIGMA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_FIGY_BERRY = this.create("potted_figy_berry", BlocksInvoker.createFlowerPotBlock(FIGY_BERRY))
|
val POTTED_FIGY_BERRY = this.flowerPot("potted_figy_berry", FIGY_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_GANLON_BERRY = this.create("potted_ganlon_berry", BlocksInvoker.createFlowerPotBlock(GANLON_BERRY))
|
val POTTED_GANLON_BERRY = this.flowerPot("potted_ganlon_berry", GANLON_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_GREPA_BERRY = this.create("potted_grepa_berry", BlocksInvoker.createFlowerPotBlock(GREPA_BERRY))
|
val POTTED_GREPA_BERRY = this.flowerPot("potted_grepa_berry", GREPA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_HABAN_BERRY = this.create("potted_haban_berry", BlocksInvoker.createFlowerPotBlock(HABAN_BERRY))
|
val POTTED_HABAN_BERRY = this.flowerPot("potted_haban_berry", HABAN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_HONDEW_BERRY = this.create("potted_hondew_berry", BlocksInvoker.createFlowerPotBlock(HONDEW_BERRY))
|
val POTTED_HONDEW_BERRY = this.flowerPot("potted_hondew_berry", HONDEW_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_HOPO_BERRY = this.create("potted_hopo_berry", BlocksInvoker.createFlowerPotBlock(HOPO_BERRY))
|
val POTTED_HOPO_BERRY = this.flowerPot("potted_hopo_berry", HOPO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_IAPAPA_BERRY = this.create("potted_iapapa_berry", BlocksInvoker.createFlowerPotBlock(IAPAPA_BERRY))
|
val POTTED_IAPAPA_BERRY = this.flowerPot("potted_iapapa_berry", IAPAPA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_JABOCA_BERRY = this.create("potted_jaboca_berry", BlocksInvoker.createFlowerPotBlock(JABOCA_BERRY))
|
val POTTED_JABOCA_BERRY = this.flowerPot("potted_jaboca_berry", JABOCA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_KASIB_BERRY = this.create("potted_kasib_berry", BlocksInvoker.createFlowerPotBlock(KASIB_BERRY))
|
val POTTED_KASIB_BERRY = this.flowerPot("potted_kasib_berry", KASIB_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_KEBIA_BERRY = this.create("potted_kebia_berry", BlocksInvoker.createFlowerPotBlock(KEBIA_BERRY))
|
val POTTED_KEBIA_BERRY = this.flowerPot("potted_kebia_berry", KEBIA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_KEE_BERRY = this.create("potted_kee_berry", BlocksInvoker.createFlowerPotBlock(KEE_BERRY))
|
val POTTED_KEE_BERRY = this.flowerPot("potted_kee_berry", KEE_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_KELPSY_BERRY = this.create("potted_kelpsy_berry", BlocksInvoker.createFlowerPotBlock(KELPSY_BERRY))
|
val POTTED_KELPSY_BERRY = this.flowerPot("potted_kelpsy_berry", KELPSY_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_LANSAT_BERRY = this.create("potted_lansat_berry", BlocksInvoker.createFlowerPotBlock(LANSAT_BERRY))
|
val POTTED_LANSAT_BERRY = this.flowerPot("potted_lansat_berry", LANSAT_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_LEPPA_BERRY = this.create("potted_leppa_berry", BlocksInvoker.createFlowerPotBlock(LEPPA_BERRY))
|
val POTTED_LEPPA_BERRY = this.flowerPot("potted_leppa_berry", LEPPA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_LIECHI_BERRY = this.create("potted_liechi_berry", BlocksInvoker.createFlowerPotBlock(LIECHI_BERRY))
|
val POTTED_LIECHI_BERRY = this.flowerPot("potted_liechi_berry", LIECHI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_LUM_BERRY = this.create("potted_lum_berry", BlocksInvoker.createFlowerPotBlock(LUM_BERRY))
|
val POTTED_LUM_BERRY = this.flowerPot("potted_lum_berry", LUM_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_MAGO_BERRY = this.create("potted_mago_berry", BlocksInvoker.createFlowerPotBlock(MAGO_BERRY))
|
val POTTED_MAGO_BERRY = this.flowerPot("potted_mago_berry", MAGO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_MAGOST_BERRY = this.create("potted_magost_berry", BlocksInvoker.createFlowerPotBlock(MAGOST_BERRY))
|
val POTTED_MAGOST_BERRY = this.flowerPot("potted_magost_berry", MAGOST_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_MARANGA_BERRY = this.create("potted_maranga_berry", BlocksInvoker.createFlowerPotBlock(MARANGA_BERRY))
|
val POTTED_MARANGA_BERRY = this.flowerPot("potted_maranga_berry", MARANGA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_MICLE_BERRY = this.create("potted_micle_berry", BlocksInvoker.createFlowerPotBlock(MICLE_BERRY))
|
val POTTED_MICLE_BERRY = this.flowerPot("potted_micle_berry", MICLE_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_NANAB_BERRY = this.create("potted_nanab_berry", BlocksInvoker.createFlowerPotBlock(NANAB_BERRY))
|
val POTTED_NANAB_BERRY = this.flowerPot("potted_nanab_berry", NANAB_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_NOMEL_BERRY = this.create("potted_nomel_berry", BlocksInvoker.createFlowerPotBlock(NOMEL_BERRY))
|
val POTTED_NOMEL_BERRY = this.flowerPot("potted_nomel_berry", NOMEL_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_OCCA_BERRY = this.create("potted_occa_berry", BlocksInvoker.createFlowerPotBlock(OCCA_BERRY))
|
val POTTED_OCCA_BERRY = this.flowerPot("potted_occa_berry", OCCA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_ORAN_BERRY = this.create("potted_oran_berry", BlocksInvoker.createFlowerPotBlock(ORAN_BERRY))
|
val POTTED_ORAN_BERRY = this.flowerPot("potted_oran_berry", ORAN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PAMTRE_BERRY = this.create("potted_pamtre_berry", BlocksInvoker.createFlowerPotBlock(PAMTRE_BERRY))
|
val POTTED_PAMTRE_BERRY = this.flowerPot("potted_pamtre_berry", PAMTRE_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PASSHO_BERRY = this.create("potted_passho_berry", BlocksInvoker.createFlowerPotBlock(PASSHO_BERRY))
|
val POTTED_PASSHO_BERRY = this.flowerPot("potted_passho_berry", PASSHO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PAYAPA_BERRY = this.create("potted_payapa_berry", BlocksInvoker.createFlowerPotBlock(PAYAPA_BERRY))
|
val POTTED_PAYAPA_BERRY = this.flowerPot("potted_payapa_berry", PAYAPA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PECHA_BERRY = this.create("potted_pecha_berry", BlocksInvoker.createFlowerPotBlock(PECHA_BERRY))
|
val POTTED_PECHA_BERRY = this.flowerPot("potted_pecha_berry", PECHA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PERSIM_BERRY = this.create("potted_persim_berry", BlocksInvoker.createFlowerPotBlock(PERSIM_BERRY))
|
val POTTED_PERSIM_BERRY = this.flowerPot("potted_persim_berry", PERSIM_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PETAYA_BERRY = this.create("potted_petaya_berry", BlocksInvoker.createFlowerPotBlock(PETAYA_BERRY))
|
val POTTED_PETAYA_BERRY = this.flowerPot("potted_petaya_berry", PETAYA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_PINAP_BERRY = this.create("potted_pinap_berry", BlocksInvoker.createFlowerPotBlock(PINAP_BERRY))
|
val POTTED_PINAP_BERRY = this.flowerPot("potted_pinap_berry", PINAP_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_POMEG_BERRY = this.create("potted_pomeg_berry", BlocksInvoker.createFlowerPotBlock(POMEG_BERRY))
|
val POTTED_POMEG_BERRY = this.flowerPot("potted_pomeg_berry", POMEG_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_QUALOT_BERRY = this.create("potted_qualot_berry", BlocksInvoker.createFlowerPotBlock(QUALOT_BERRY))
|
val POTTED_QUALOT_BERRY = this.flowerPot("potted_qualot_berry", QUALOT_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_RABUTA_BERRY = this.create("potted_rabuta_berry", BlocksInvoker.createFlowerPotBlock(RABUTA_BERRY))
|
val POTTED_RABUTA_BERRY = this.flowerPot("potted_rabuta_berry", RABUTA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_RAWST_BERRY = this.create("potted_rawst_berry", BlocksInvoker.createFlowerPotBlock(RAWST_BERRY))
|
val POTTED_RAWST_BERRY = this.flowerPot("potted_rawst_berry", RAWST_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_RAZZ_BERRY = this.create("potted_razz_berry", BlocksInvoker.createFlowerPotBlock(RAZZ_BERRY))
|
val POTTED_RAZZ_BERRY = this.flowerPot("potted_razz_berry", RAZZ_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_RINDO_BERRY = this.create("potted_rindo_berry", BlocksInvoker.createFlowerPotBlock(RINDO_BERRY))
|
val POTTED_RINDO_BERRY = this.flowerPot("potted_rindo_berry", RINDO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_ROSELI_BERRY = this.create("potted_roseli_berry", BlocksInvoker.createFlowerPotBlock(ROSELI_BERRY))
|
val POTTED_ROSELI_BERRY = this.flowerPot("potted_roseli_berry", ROSELI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_ROWAP_BERRY = this.create("potted_rowap_berry", BlocksInvoker.createFlowerPotBlock(ROWAP_BERRY))
|
val POTTED_ROWAP_BERRY = this.flowerPot("potted_rowap_berry", ROWAP_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_SALAC_BERRY = this.create("potted_salac_berry", BlocksInvoker.createFlowerPotBlock(SALAC_BERRY))
|
val POTTED_SALAC_BERRY = this.flowerPot("potted_salac_berry", SALAC_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_SHUCA_BERRY = this.create("potted_shuca_berry", BlocksInvoker.createFlowerPotBlock(SHUCA_BERRY))
|
val POTTED_SHUCA_BERRY = this.flowerPot("potted_shuca_berry", SHUCA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_SITRUS_BERRY = this.create("potted_sitrus_berry", BlocksInvoker.createFlowerPotBlock(SITRUS_BERRY))
|
val POTTED_SITRUS_BERRY = this.flowerPot("potted_sitrus_berry", SITRUS_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_SPELON_BERRY = this.create("potted_spelon_berry", BlocksInvoker.createFlowerPotBlock(SPELON_BERRY))
|
val POTTED_SPELON_BERRY = this.flowerPot("potted_spelon_berry", SPELON_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_STARF_BERRY = this.create("potted_starf_berry", BlocksInvoker.createFlowerPotBlock(STARF_BERRY))
|
val POTTED_STARF_BERRY = this.flowerPot("potted_starf_berry", STARF_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_TAMATO_BERRY = this.create("potted_tamato_berry", BlocksInvoker.createFlowerPotBlock(TAMATO_BERRY))
|
val POTTED_TAMATO_BERRY = this.flowerPot("potted_tamato_berry", TAMATO_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_TANGA_BERRY = this.create("potted_tanga_berry", BlocksInvoker.createFlowerPotBlock(TANGA_BERRY))
|
val POTTED_TANGA_BERRY = this.flowerPot("potted_tanga_berry", TANGA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_TOUGA_BERRY = this.create("potted_touga_berry", BlocksInvoker.createFlowerPotBlock(TOUGA_BERRY))
|
val POTTED_TOUGA_BERRY = this.flowerPot("potted_touga_berry", TOUGA_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_WACAN_BERRY = this.create("potted_wacan_berry", BlocksInvoker.createFlowerPotBlock(WACAN_BERRY))
|
val POTTED_WACAN_BERRY = this.flowerPot("potted_wacan_berry", WACAN_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_WATMEL_BERRY = this.create("potted_watmel_berry", BlocksInvoker.createFlowerPotBlock(WATMEL_BERRY))
|
val POTTED_WATMEL_BERRY = this.flowerPot("potted_watmel_berry", WATMEL_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_WEPEAR_BERRY = this.create("potted_wepear_berry", BlocksInvoker.createFlowerPotBlock(WEPEAR_BERRY))
|
val POTTED_WEPEAR_BERRY = this.flowerPot("potted_wepear_berry", WEPEAR_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_WIKI_BERRY = this.create("potted_wiki_berry", BlocksInvoker.createFlowerPotBlock(WIKI_BERRY))
|
val POTTED_WIKI_BERRY = this.flowerPot("potted_wiki_berry", WIKI_BERRY)
|
||||||
@JvmField
|
@JvmField
|
||||||
val POTTED_YACHE_BERRY = this.create("potted_yache_berry", BlocksInvoker.createFlowerPotBlock(YACHE_BERRY))
|
val POTTED_YACHE_BERRY = this.flowerPot("potted_yache_berry", YACHE_BERRY)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_PEP_UP_FLOWER = this.flowerPot("potted_pep_up_flower", PEP_UP_FLOWER)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_RED_APRICORN_SAPLING = this.flowerPot("potted_red_apricorn_sapling", RED_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_YELLOW_APRICORN_SAPLING = this.flowerPot("potted_yellow_apricorn_sapling", YELLOW_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_GREEN_APRICORN_SAPLING = this.flowerPot("potted_green_apricorn_sapling", GREEN_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_BLUE_APRICORN_SAPLING = this.flowerPot("potted_blue_apricorn_sapling", BLUE_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_PINK_APRICORN_SAPLING = this.flowerPot("potted_pink_apricorn_sapling", PINK_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_BLACK_APRICORN_SAPLING = this.flowerPot("potted_black_apricorn_sapling", BLACK_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_WHITE_APRICORN_SAPLING = this.flowerPot("potted_white_apricorn_sapling", WHITE_APRICORN_SAPLING)
|
||||||
|
@JvmField
|
||||||
|
val POTTED_SACCHARINE_SAPLING = this.flowerPot("potted_saccharine_sapling", SACCHARINE_SAPLING)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
/**
|
/**
|
||||||
@@ -1346,7 +1345,16 @@ object CobblemonBlocks : PlatformRegistry<Registry<Block>, ResourceKey<Registry<
|
|||||||
|
|
||||||
fun typeGemClusters() = typeGemClusters.toMap()
|
fun typeGemClusters() = typeGemClusters.toMap()
|
||||||
|
|
||||||
private fun pottedPlant(name: String, flower: Block) = this.create(name, BlocksInvoker.createFlowerPotBlock(flower))
|
private fun flowerPot(name: String, flower: Block) = this.create(
|
||||||
|
name,
|
||||||
|
FlowerPotBlock(
|
||||||
|
flower,
|
||||||
|
BlockBehaviour.Properties.of()
|
||||||
|
.instabreak()
|
||||||
|
.noOcclusion()
|
||||||
|
.pushReaction(PushReaction.DESTROY)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
private fun mintLitter(name: String, color: MapColor) = this.create(
|
private fun mintLitter(name: String, color: MapColor) = this.create(
|
||||||
name,
|
name,
|
||||||
|
|||||||
+31
-7
@@ -9,6 +9,7 @@
|
|||||||
package com.cobblemon.mod.common.api.ai.config.task
|
package com.cobblemon.mod.common.api.ai.config.task
|
||||||
|
|
||||||
import com.bedrockk.molang.Expression
|
import com.bedrockk.molang.Expression
|
||||||
|
import com.cobblemon.mod.common.Cobblemon
|
||||||
import com.cobblemon.mod.common.api.ai.BehaviourConfigurationContext
|
import com.cobblemon.mod.common.api.ai.BehaviourConfigurationContext
|
||||||
import com.cobblemon.mod.common.api.ai.ExpressionOrEntityVariable
|
import com.cobblemon.mod.common.api.ai.ExpressionOrEntityVariable
|
||||||
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
import com.cobblemon.mod.common.api.molang.MoLangFunctions.asMostSpecificMoLangValue
|
||||||
@@ -17,6 +18,7 @@ import com.cobblemon.mod.common.util.asExpression
|
|||||||
import com.cobblemon.mod.common.util.mainThreadRuntime
|
import com.cobblemon.mod.common.util.mainThreadRuntime
|
||||||
import com.cobblemon.mod.common.util.resolveBoolean
|
import com.cobblemon.mod.common.util.resolveBoolean
|
||||||
import com.cobblemon.mod.common.util.withQueryValue
|
import com.cobblemon.mod.common.util.withQueryValue
|
||||||
|
import com.cobblemon.mod.common.world.gamerules.CobblemonGameRules
|
||||||
import com.mojang.datafixers.util.Either
|
import com.mojang.datafixers.util.Either
|
||||||
import net.minecraft.world.entity.LivingEntity
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
import net.minecraft.world.entity.ai.behavior.BehaviorControl
|
||||||
@@ -34,6 +36,8 @@ import net.minecraft.world.entity.ai.sensing.SensorType
|
|||||||
class HateEntityTaskConfig : SingleTaskConfig {
|
class HateEntityTaskConfig : SingleTaskConfig {
|
||||||
val entityCondition: Expression = "true".asExpression()
|
val entityCondition: Expression = "true".asExpression()
|
||||||
val range: ExpressionOrEntityVariable = Either.left("24".asExpression())
|
val range: ExpressionOrEntityVariable = Either.left("24".asExpression())
|
||||||
|
val chance: Float = Cobblemon.config.predationChance
|
||||||
|
private val coercedChance = chance.coerceIn(0f, 1f)
|
||||||
|
|
||||||
override fun getVariables(entity: LivingEntity, behaviourConfigurationContext: BehaviourConfigurationContext) = emptyList<MoLangConfigVariable>()
|
override fun getVariables(entity: LivingEntity, behaviourConfigurationContext: BehaviourConfigurationContext) = emptyList<MoLangConfigVariable>()
|
||||||
override fun createTask(
|
override fun createTask(
|
||||||
@@ -43,24 +47,44 @@ class HateEntityTaskConfig : SingleTaskConfig {
|
|||||||
val range = range.resolveFloat(behaviourConfigurationContext.runtime)
|
val range = range.resolveFloat(behaviourConfigurationContext.runtime)
|
||||||
behaviourConfigurationContext.addMemories(
|
behaviourConfigurationContext.addMemories(
|
||||||
MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES,
|
MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES,
|
||||||
MemoryModuleType.ANGRY_AT
|
MemoryModuleType.ANGRY_AT,
|
||||||
|
MemoryModuleType.ATTACK_TARGET
|
||||||
)
|
)
|
||||||
behaviourConfigurationContext.addSensors(SensorType.NEAREST_LIVING_ENTITIES)
|
behaviourConfigurationContext.addSensors(SensorType.NEAREST_LIVING_ENTITIES)
|
||||||
return BehaviorBuilder.create { instance ->
|
return BehaviorBuilder.create { instance ->
|
||||||
instance.group(
|
instance.group(
|
||||||
instance.present(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES),
|
instance.present(MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES),
|
||||||
instance.registered(MemoryModuleType.ANGRY_AT)
|
instance.registered(MemoryModuleType.ANGRY_AT),
|
||||||
).apply(instance) { entities, angryAt ->
|
instance.registered(MemoryModuleType.ATTACK_TARGET),
|
||||||
|
).apply(instance) { entities, angryAt, attackTarget ->
|
||||||
Trigger { world, entity, _ ->
|
Trigger { world, entity, _ ->
|
||||||
val target = instance.get(entities).findClosest {
|
// bail if gamerule is disabled
|
||||||
mainThreadRuntime.withQueryValue("entity", entity.asMostSpecificMoLangValue())
|
if (!world.gameRules.getBoolean(CobblemonGameRules.DO_POKEMON_PREDATION)) return@Trigger false
|
||||||
|
val target = instance.get(entities).findClosest { hated ->
|
||||||
|
mainThreadRuntime.withQueryValue("entity", hated.asMostSpecificMoLangValue())
|
||||||
return@findClosest mainThreadRuntime.resolveBoolean(entityCondition)
|
return@findClosest mainThreadRuntime.resolveBoolean(entityCondition)
|
||||||
}.orElse(null)
|
}.orElse(null)
|
||||||
|
|
||||||
|
var shouldTrigger = false
|
||||||
if (target != null && target.distanceTo(entity) <= range) {
|
if (target != null && target.distanceTo(entity) <= range) {
|
||||||
angryAt.set(target.uuid)
|
shouldTrigger = when {
|
||||||
|
// set always attacking if activity chance is equal to 1.0
|
||||||
|
coercedChance == 1f -> {
|
||||||
|
angryAt.set(target.uuid)
|
||||||
|
attackTarget.set(target)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
// roll the dice in other way
|
||||||
|
coercedChance != 1f && world.random.nextFloat() < coercedChance -> {
|
||||||
|
angryAt.set(target.uuid)
|
||||||
|
attackTarget.set(target)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
// fallback to peaceful behavior in unattended cases
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return@Trigger true
|
return@Trigger shouldTrigger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -98,14 +98,14 @@ object LivingEntityMoLangFunctions : AbstractMoLangFunctionHolder<LivingEntity>(
|
|||||||
val targetEntity = params.get<MoValue>(0)
|
val targetEntity = params.get<MoValue>(0)
|
||||||
val maxDistance = params.getDoubleOrNull(1)?.toFloat() ?: 2.0F
|
val maxDistance = params.getDoubleOrNull(1)?.toFloat() ?: 2.0F
|
||||||
|
|
||||||
val entity =
|
val target =
|
||||||
if (targetEntity is ObjectValue<*> && targetEntity.obj is Entity) {
|
if (targetEntity is ObjectValue<*> && targetEntity.obj is Entity) {
|
||||||
targetEntity.obj as Entity
|
targetEntity.obj as Entity
|
||||||
} else {
|
} else {
|
||||||
return@isLookingAt DoubleValue.ZERO
|
return@isLookingAt DoubleValue.ZERO
|
||||||
}
|
}
|
||||||
|
|
||||||
DoubleValue(entity.isLookingAt(entity, maxDistance))
|
DoubleValue(entity.isLookingAt(target, maxDistance))
|
||||||
}
|
}
|
||||||
functions["is_living_entity"] = { DoubleValue.ONE }
|
functions["is_living_entity"] = { DoubleValue.ONE }
|
||||||
functions["is_flying"] = { DoubleValue(entity.isFallFlying) }
|
functions["is_flying"] = { DoubleValue(entity.isFallFlying) }
|
||||||
|
|||||||
+1
-1
@@ -212,7 +212,7 @@ object PokemonMoLangFunctions : AbstractMoLangFunctionHolder<Pokemon>() {
|
|||||||
// Lol. Lmao, even.
|
// Lol. Lmao, even.
|
||||||
// TO-DO: Subscribe to [PokemonSpecies.observable].
|
// TO-DO: Subscribe to [PokemonSpecies.observable].
|
||||||
functions["pre_evolution"] = { pokemon.species.preEvolution ?: DoubleValue.ZERO }
|
functions["pre_evolution"] = { pokemon.species.preEvolution ?: DoubleValue.ZERO }
|
||||||
functions["nature"] = { StringValue(pokemon.nature.toString()) }
|
functions["nature"] = { StringValue(pokemon.nature.name.toString()) }
|
||||||
functions["is_wild"] = { DoubleValue(pokemon.entity?.let { it.ownerUUID == null } == true) }
|
functions["is_wild"] = { DoubleValue(pokemon.entity?.let { it.ownerUUID == null } == true) }
|
||||||
functions["is_shiny"] = { DoubleValue(pokemon.shiny) }
|
functions["is_shiny"] = { DoubleValue(pokemon.shiny) }
|
||||||
functions["is_in_party"] = { DoubleValue(pokemon.storeCoordinates.get()?.store is PartyStore) }
|
functions["is_in_party"] = { DoubleValue(pokemon.storeCoordinates.get()?.store is PartyStore) }
|
||||||
|
|||||||
@@ -10,9 +10,6 @@ package com.cobblemon.mod.common.api.pokedex
|
|||||||
|
|
||||||
import com.cobblemon.mod.common.api.data.JsonDataRegistry
|
import com.cobblemon.mod.common.api.data.JsonDataRegistry
|
||||||
import com.cobblemon.mod.common.api.pokedex.def.PokedexDef
|
import com.cobblemon.mod.common.api.pokedex.def.PokedexDef
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.PokedexEntry
|
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.PokedexForm
|
|
||||||
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
|
|
||||||
import com.cobblemon.mod.common.api.reactive.SimpleObservable
|
import com.cobblemon.mod.common.api.reactive.SimpleObservable
|
||||||
import com.cobblemon.mod.common.net.messages.client.data.PokedexDexSyncPacket
|
import com.cobblemon.mod.common.net.messages.client.data.PokedexDexSyncPacket
|
||||||
import com.cobblemon.mod.common.util.adapters.CodecBackedAdapter
|
import com.cobblemon.mod.common.util.adapters.CodecBackedAdapter
|
||||||
@@ -64,14 +61,6 @@ object Dexes : JsonDataRegistry<PokedexDef> {
|
|||||||
PokedexDexSyncPacket(dexEntryMap.values).sendToPlayer(player)
|
PokedexDexSyncPacket(dexEntryMap.values).sendToPlayer(player)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun findDexEntryBySpeciesId(regionId: ResourceLocation, speciesId: ResourceLocation): PokedexEntry? {
|
|
||||||
return dexEntryMap[regionId]?.getEntries()?.firstOrNull { it -> it.speciesId == speciesId }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun findDexEntryBySpeciesId(speciesId: ResourceLocation): PokedexEntry? {
|
|
||||||
return findDexEntryBySpeciesId(cobblemonResource("national"), speciesId)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getFormEquivalents(formName: String): List<String> {
|
fun getFormEquivalents(formName: String): List<String> {
|
||||||
val key = equivalentFormsLookup[formName.lowercase()]
|
val key = equivalentFormsLookup[formName.lowercase()]
|
||||||
return equivalentForms[key] ?: listOf(formName.lowercase())
|
return equivalentForms[key] ?: listOf(formName.lowercase())
|
||||||
|
|||||||
+6
-6
@@ -88,7 +88,7 @@ fun getToolTipHeaderIcon(tradeEvolution: TradeEvolution): CobblemonDexEvolutionR
|
|||||||
lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
||||||
} else {
|
} else {
|
||||||
PokemonSpecies.getByIdentifier(species.asIdentifierDefaultingNamespace())
|
PokemonSpecies.getByIdentifier(species.asIdentifierDefaultingNamespace())
|
||||||
?.let { lang("ui.pokedex.evolution.trade.tooltip.with_species", it.translatedName.green()) }
|
?.let { lang("ui.pokedex.evolution.trade.tooltip.with_species", it.translatedName.plainCopy().green()) }
|
||||||
?: lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
?: lang("ui.pokedex.evolution.trade.tooltip.with_any_species")
|
||||||
}
|
}
|
||||||
return CobblemonDexEvolutionRequirementDisplay(CobblemonItems.LINK_CABLE, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(CobblemonItems.LINK_CABLE, tooltip)
|
||||||
@@ -282,7 +282,7 @@ fun buildLevelRequirement(levelRequirement: LevelRequirement): DexEvolutionRequi
|
|||||||
|
|
||||||
fun buildMoonPhaseRequirement(moonPhaseRequirement: MoonPhaseRequirement): DexEvolutionRequirementDisplay {
|
fun buildMoonPhaseRequirement(moonPhaseRequirement: MoonPhaseRequirement): DexEvolutionRequirementDisplay {
|
||||||
val icon = Items.CLOCK
|
val icon = Items.CLOCK
|
||||||
val moonPhaseComponent = moonPhaseRequirement.moonPhase.displayName().green()
|
val moonPhaseComponent = moonPhaseRequirement.moonPhase.displayName().plainCopy().green()
|
||||||
val tooltip = lang("ui.pokedex.requirement.moon_phase.tooltip", moonPhaseComponent)
|
val tooltip = lang("ui.pokedex.requirement.moon_phase.tooltip", moonPhaseComponent)
|
||||||
|
|
||||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||||
@@ -290,7 +290,7 @@ fun buildMoonPhaseRequirement(moonPhaseRequirement: MoonPhaseRequirement): DexEv
|
|||||||
|
|
||||||
fun buildMoveSetRequirement(moveSetRequirement: MoveSetRequirement): DexEvolutionRequirementDisplay {
|
fun buildMoveSetRequirement(moveSetRequirement: MoveSetRequirement): DexEvolutionRequirementDisplay {
|
||||||
val icon = CobblemonItems.TECHNICAL_MACHINE
|
val icon = CobblemonItems.TECHNICAL_MACHINE
|
||||||
val tooltip = lang("ui.pokedex.requirement.has_move.tooltip", moveSetRequirement.move.displayName.green())
|
val tooltip = lang("ui.pokedex.requirement.has_move.tooltip", moveSetRequirement.move.displayName.plainCopy().green())
|
||||||
|
|
||||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||||
}
|
}
|
||||||
@@ -319,7 +319,7 @@ fun buildMoveTypeRequirement(moveTypeRequirement: MoveTypeRequirement): DexEvolu
|
|||||||
else -> CobblemonItems.NORMAL_GEM
|
else -> CobblemonItems.NORMAL_GEM
|
||||||
}
|
}
|
||||||
|
|
||||||
val tooltip = lang("ui.pokedex.requirement.has_move_type.tooltip", moveTypeRequirement.type.displayName.green())
|
val tooltip = lang("ui.pokedex.requirement.has_move_type.tooltip", moveTypeRequirement.type.displayName.plainCopy().green())
|
||||||
|
|
||||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||||
}
|
}
|
||||||
@@ -437,7 +437,7 @@ fun buildStructureRequirement(structureRequirement: StructureRequirement, negate
|
|||||||
|
|
||||||
fun buildTimeRangeRequirement(timeRangeRequirement: TimeRangeRequirement): DexEvolutionRequirementDisplay? {
|
fun buildTimeRangeRequirement(timeRangeRequirement: TimeRangeRequirement): DexEvolutionRequirementDisplay? {
|
||||||
val icon = Items.CLOCK
|
val icon = Items.CLOCK
|
||||||
val timeRangeComponent = timeRangeRequirement.range.displayName() ?: return null
|
val timeRangeComponent = timeRangeRequirement.range.displayName()?.plainCopy() ?: return null
|
||||||
val tooltip = lang("ui.pokedex.requirement.time_range.tooltip", timeRangeComponent.green())
|
val tooltip = lang("ui.pokedex.requirement.time_range.tooltip", timeRangeComponent.green())
|
||||||
|
|
||||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||||
@@ -445,7 +445,7 @@ fun buildTimeRangeRequirement(timeRangeRequirement: TimeRangeRequirement): DexEv
|
|||||||
|
|
||||||
fun buildUseMoveRequirement(useMoveRequirement: UseMoveRequirement): DexEvolutionRequirementDisplay {
|
fun buildUseMoveRequirement(useMoveRequirement: UseMoveRequirement): DexEvolutionRequirementDisplay {
|
||||||
val icon = CobblemonItems.CHOICE_BAND
|
val icon = CobblemonItems.CHOICE_BAND
|
||||||
val tooltip = lang("ui.pokedex.requirement.use_move.tooltip", useMoveRequirement.move.displayName.green())
|
val tooltip = lang("ui.pokedex.requirement.use_move.tooltip", useMoveRequirement.move.displayName.plainCopy().green())
|
||||||
|
|
||||||
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
return CobblemonDexEvolutionRequirementDisplay(icon, tooltip)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -42,8 +42,8 @@ abstract class AreaTypeSpawningCondition<T : AreaSpawnablePosition> : SpawningCo
|
|||||||
override fun copyFrom(other: SpawningCondition<*>, merger: Merger) {
|
override fun copyFrom(other: SpawningCondition<*>, merger: Merger) {
|
||||||
super.copyFrom(other, merger)
|
super.copyFrom(other, merger)
|
||||||
if (other is AreaTypeSpawningCondition) {
|
if (other is AreaTypeSpawningCondition) {
|
||||||
merger.mergeSingle(minHeight, other.minHeight)
|
minHeight = merger.mergeSingle(minHeight, other.minHeight)
|
||||||
merger.mergeSingle(maxHeight, other.maxHeight)
|
maxHeight = merger.mergeSingle(maxHeight, other.maxHeight)
|
||||||
neededNearbyBlocks = merger.merge(neededNearbyBlocks, other.neededNearbyBlocks)?.toMutableList()
|
neededNearbyBlocks = merger.merge(neededNearbyBlocks, other.neededNearbyBlocks)?.toMutableList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ abstract class SubmergedTypeSpawningCondition<T : SubmergedSpawnablePosition> :
|
|||||||
super.copyFrom(other, merger)
|
super.copyFrom(other, merger)
|
||||||
if (other is SubmergedTypeSpawningCondition) {
|
if (other is SubmergedTypeSpawningCondition) {
|
||||||
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||||
maxDepth = merger.mergeSingle(minDepth, other.minDepth)
|
maxDepth = merger.mergeSingle(maxDepth, other.maxDepth)
|
||||||
fluidIsSource = merger.mergeSingle(fluidIsSource, other.fluidIsSource)
|
fluidIsSource = merger.mergeSingle(fluidIsSource, other.fluidIsSource)
|
||||||
fluid = merger.mergeSingle(fluid, other.fluid)
|
fluid = merger.mergeSingle(fluid, other.fluid)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@ abstract class SurfaceTypeSpawningCondition<T : SurfaceSpawnablePosition> : Area
|
|||||||
super.copyFrom(other, merger)
|
super.copyFrom(other, merger)
|
||||||
if (other is SurfaceTypeSpawningCondition) {
|
if (other is SurfaceTypeSpawningCondition) {
|
||||||
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
minDepth = merger.mergeSingle(minDepth, other.minDepth)
|
||||||
maxDepth = merger.mergeSingle(minDepth, other.minDepth)
|
maxDepth = merger.mergeSingle(maxDepth, other.maxDepth)
|
||||||
fluid = merger.mergeSingle(fluid, other.fluid)
|
fluid = merger.mergeSingle(fluid, other.fluid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ object CobblemonItemTags {
|
|||||||
@JvmField val DESTINY_KNOT = create("held/destiny_knot")
|
@JvmField val DESTINY_KNOT = create("held/destiny_knot")
|
||||||
@JvmField val EVERSTONE = create("held/everstone")
|
@JvmField val EVERSTONE = create("held/everstone")
|
||||||
@JvmField val EXPERIENCE_SHARE = create("held/experience_share")
|
@JvmField val EXPERIENCE_SHARE = create("held/experience_share")
|
||||||
@JvmField val IS_FRIENDSHIP_BOOSTER = create("is_friendship_booster")
|
@JvmField val IS_FRIENDSHIP_BOOSTER = create("held/is_friendship_booster")
|
||||||
@JvmField val ANY_HELD_ITEM = create("held/is_held_item")
|
@JvmField val ANY_HELD_ITEM = create("held/is_held_item")
|
||||||
@JvmField val BLACKLISTED_ITEMS_TO_HOLD = create("held/blacklisted_items_to_hold")
|
@JvmField val BLACKLISTED_ITEMS_TO_HOLD = create("held/blacklisted_items_to_hold")
|
||||||
@JvmField val WHITELISTED_ITEMS_TO_HOLD = create("held/whitelisted_items_to_hold")
|
@JvmField val WHITELISTED_ITEMS_TO_HOLD = create("held/whitelisted_items_to_hold")
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ class PartyOverlay : Gui(Minecraft.getInstance()) {
|
|||||||
if (HidePartyBinding.shouldHide) {
|
if (HidePartyBinding.shouldHide) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -558,4 +559,4 @@ class PartyOverlay : Gui(Minecraft.getInstance()) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-20
@@ -9,19 +9,11 @@
|
|||||||
package com.cobblemon.mod.common.client.gui.pokedex.widgets
|
package com.cobblemon.mod.common.client.gui.pokedex.widgets
|
||||||
|
|
||||||
import com.cobblemon.mod.common.Cobblemon
|
import com.cobblemon.mod.common.Cobblemon
|
||||||
import com.cobblemon.mod.common.CobblemonItems
|
|
||||||
import com.cobblemon.mod.common.api.gui.*
|
import com.cobblemon.mod.common.api.gui.*
|
||||||
import com.cobblemon.mod.common.api.pokedex.Dexes
|
import com.cobblemon.mod.common.api.pokedex.Dexes
|
||||||
import com.cobblemon.mod.common.api.pokedex.PokedexEntryProgress
|
import com.cobblemon.mod.common.api.pokedex.PokedexEntryProgress
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.CobblemonBiomeDexEvolutionRequirementDisplay
|
import com.cobblemon.mod.common.api.pokedex.entry.*
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.DexEntries
|
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.DexEvolutionDisplay
|
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.DexEvolutionRequirementDisplay
|
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.PokedexEntry
|
|
||||||
import com.cobblemon.mod.common.api.pokedex.entry.PokedexForm
|
|
||||||
import com.cobblemon.mod.common.api.pokemon.PokemonProperties
|
|
||||||
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
|
import com.cobblemon.mod.common.api.pokemon.PokemonSpecies
|
||||||
import com.cobblemon.mod.common.api.pokemon.evolution.Evolution
|
|
||||||
import com.cobblemon.mod.common.api.text.add
|
import com.cobblemon.mod.common.api.text.add
|
||||||
import com.cobblemon.mod.common.api.text.bold
|
import com.cobblemon.mod.common.api.text.bold
|
||||||
import com.cobblemon.mod.common.api.text.green
|
import com.cobblemon.mod.common.api.text.green
|
||||||
@@ -41,16 +33,15 @@ import com.cobblemon.mod.common.client.render.renderScaledGuiItemIcon
|
|||||||
import com.cobblemon.mod.common.pokemon.FormData
|
import com.cobblemon.mod.common.pokemon.FormData
|
||||||
import com.cobblemon.mod.common.pokemon.Gender
|
import com.cobblemon.mod.common.pokemon.Gender
|
||||||
import com.cobblemon.mod.common.pokemon.RenderablePokemon
|
import com.cobblemon.mod.common.pokemon.RenderablePokemon
|
||||||
import com.cobblemon.mod.common.util.asIdentifierDefaultingNamespace
|
|
||||||
import com.cobblemon.mod.common.util.cobblemonResource
|
import com.cobblemon.mod.common.util.cobblemonResource
|
||||||
import com.cobblemon.mod.common.util.lang
|
import com.cobblemon.mod.common.util.lang
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.client.gui.GuiGraphics
|
import net.minecraft.client.gui.GuiGraphics
|
||||||
import net.minecraft.core.registries.Registries
|
import net.minecraft.core.registries.Registries
|
||||||
import net.minecraft.locale.Language
|
import net.minecraft.locale.Language
|
||||||
import net.minecraft.resources.ResourceLocation
|
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.network.chat.MutableComponent
|
import net.minecraft.network.chat.MutableComponent
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.tags.TagKey
|
import net.minecraft.tags.TagKey
|
||||||
|
|
||||||
class EvolutionTreeWidget(
|
class EvolutionTreeWidget(
|
||||||
@@ -168,7 +159,8 @@ class EvolutionTreeWidget(
|
|||||||
// Stop at whatever the dex can't resolve, and at cycles (datapacks)
|
// Stop at whatever the dex can't resolve, and at cycles (datapacks)
|
||||||
val visited = mutableSetOf(rootSpecies.speciesId to rootForm.displayForm)
|
val visited = mutableSetOf(rootSpecies.speciesId to rootForm.displayForm)
|
||||||
while (preEvolution != null) {
|
while (preEvolution != null) {
|
||||||
val preEvolutionSpecies = Dexes.findDexEntryBySpeciesId(preEvolution.fromSpecies) ?: break
|
val preEvolutionSpecies = DexEntries.entries.values.firstOrNull { it.speciesId == preEvolution.fromSpecies &&
|
||||||
|
it.forms.any {form -> form.displayForm.equals(preEvolution.fromForm, ignoreCase = true)}} ?: break
|
||||||
val preEvolutionForm = preEvolutionSpecies.forms.firstOrNull { it.displayForm.equals(preEvolution.fromForm, ignoreCase = true) } ?: break
|
val preEvolutionForm = preEvolutionSpecies.forms.firstOrNull { it.displayForm.equals(preEvolution.fromForm, ignoreCase = true) } ?: break
|
||||||
if (!visited.add(preEvolutionSpecies.speciesId to preEvolutionForm.displayForm)) break
|
if (!visited.add(preEvolutionSpecies.speciesId to preEvolutionForm.displayForm)) break
|
||||||
rootSpecies = preEvolutionSpecies
|
rootSpecies = preEvolutionSpecies
|
||||||
@@ -176,19 +168,16 @@ class EvolutionTreeWidget(
|
|||||||
preEvolution = findPreEvolution(rootSpecies, rootForm)
|
preEvolution = findPreEvolution(rootSpecies, rootForm)
|
||||||
}
|
}
|
||||||
|
|
||||||
val entry = Dexes.findDexEntryBySpeciesId(rootSpecies.speciesId)
|
|
||||||
?: throw RuntimeException("Root dex entry not found")
|
|
||||||
|
|
||||||
val viewedFormEquivalents = Dexes.getFormEquivalents(pokedexForm.displayForm)
|
val viewedFormEquivalents = Dexes.getFormEquivalents(pokedexForm.displayForm)
|
||||||
viewedForm = PokemonSpecies.getByIdentifier(pokedexEntry.speciesId)
|
viewedForm = PokemonSpecies.getByIdentifier(pokedexEntry.speciesId)
|
||||||
?.forms?.firstOrNull { viewedFormEquivalents.contains(it.name.lowercase()) }
|
?.forms?.firstOrNull { viewedFormEquivalents.contains(it.name.lowercase()) }
|
||||||
|
|
||||||
val formEquivalents = Dexes.getFormEquivalents(rootForm.displayForm)
|
val formEquivalents = Dexes.getFormEquivalents(rootForm.displayForm)
|
||||||
val form =
|
val form =
|
||||||
entry.forms.firstOrNull { formEquivalents.contains(it.displayForm.lowercase()) } ?:
|
rootSpecies.forms.firstOrNull { formEquivalents.contains(it.displayForm.lowercase()) } ?:
|
||||||
entry.forms.first { it.displayForm.equals("Normal", ignoreCase = true) }
|
rootSpecies.forms.first { it.displayForm.equals("Normal", ignoreCase = true) }
|
||||||
|
|
||||||
val rootEvolutionNode = buildEvolutionTree(entry, form)
|
val rootEvolutionNode = buildEvolutionTree(rootSpecies, form)
|
||||||
|
|
||||||
// val isSameEntry = previousRootPokedexEntry != null && pokedexEntry?.id == previousRootPokedexEntry?.id
|
// val isSameEntry = previousRootPokedexEntry != null && pokedexEntry?.id == previousRootPokedexEntry?.id
|
||||||
// val isSameForm =
|
// val isSameForm =
|
||||||
@@ -214,7 +203,7 @@ class EvolutionTreeWidget(
|
|||||||
|
|
||||||
/** The evolution leading to [form]; the standard form falls back to any form of the species (no evolution leads to regular Vivillon). */
|
/** The evolution leading to [form]; the standard form falls back to any form of the species (no evolution leads to regular Vivillon). */
|
||||||
private fun findPreEvolution(entry: PokedexEntry, form: PokedexForm): DexEvolutionDisplay? {
|
private fun findPreEvolution(entry: PokedexEntry, form: PokedexForm): DexEvolutionDisplay? {
|
||||||
return DexEntries.evolutionDisplays.firstOrNull { it.toSpecies == entry.speciesId && it.toForm == form.displayForm }
|
return DexEntries.evolutionDisplays.firstOrNull { it.toSpecies == entry.speciesId && form.displayForm.equals(it.toForm, ignoreCase = true) }
|
||||||
?: DexEntries.evolutionDisplays.takeIf { form.displayForm.equals("Normal", ignoreCase = true) }
|
?: DexEntries.evolutionDisplays.takeIf { form.displayForm.equals("Normal", ignoreCase = true) }
|
||||||
?.firstOrNull { it.toSpecies == entry.speciesId }
|
?.firstOrNull { it.toSpecies == entry.speciesId }
|
||||||
}
|
}
|
||||||
@@ -246,7 +235,8 @@ class EvolutionTreeWidget(
|
|||||||
val evolutions = DexEntries.evolutionDisplays.filter { it.fromSpecies == pokedexEntry.speciesId && formEquivalents.contains(it.fromForm.lowercase()) }
|
val evolutions = DexEntries.evolutionDisplays.filter { it.fromSpecies == pokedexEntry.speciesId && formEquivalents.contains(it.fromForm.lowercase()) }
|
||||||
|
|
||||||
val children = evolutions.mapNotNull {
|
val children = evolutions.mapNotNull {
|
||||||
val childPokedexEntry = Dexes.findDexEntryBySpeciesId(it.toSpecies)
|
val childPokedexEntry = DexEntries.entries.values.firstOrNull { entry -> entry.speciesId == it.toSpecies &&
|
||||||
|
entry.forms.any {form -> form.displayForm.equals(it.toForm, ignoreCase = true)}}
|
||||||
if (childPokedexEntry == null) {
|
if (childPokedexEntry == null) {
|
||||||
Cobblemon.LOGGER.warn("Dex entry not found for species: ${it.toSpecies}")
|
Cobblemon.LOGGER.warn("Dex entry not found for species: ${it.toSpecies}")
|
||||||
return@mapNotNull null
|
return@mapNotNull null
|
||||||
|
|||||||
+2
-2
@@ -34,6 +34,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.bedrock.animatio
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.ModelQuirk
|
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.ModelQuirk
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.QuirkData
|
import com.cobblemon.mod.common.client.render.models.blockbench.quirk.QuirkData
|
||||||
|
import com.cobblemon.mod.common.client.sound.instances.UIEntitySoundInstance
|
||||||
import com.cobblemon.mod.common.entity.PosableEntity
|
import com.cobblemon.mod.common.entity.PosableEntity
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
import com.cobblemon.mod.common.entity.PoseType
|
||||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||||
@@ -44,7 +45,6 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException
|
|||||||
import java.util.concurrent.ConcurrentLinkedQueue
|
import java.util.concurrent.ConcurrentLinkedQueue
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.client.multiplayer.ClientLevel
|
import net.minecraft.client.multiplayer.ClientLevel
|
||||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
|
||||||
import net.minecraft.commands.arguments.item.ItemParser
|
import net.minecraft.commands.arguments.item.ItemParser
|
||||||
import net.minecraft.sounds.SoundEvent
|
import net.minecraft.sounds.SoundEvent
|
||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
@@ -289,7 +289,7 @@ abstract class PosableState : Schedulable {
|
|||||||
entity.level().playLocalSound(entity, soundEvent, entity.soundSource, volume, pitch)
|
entity.level().playLocalSound(entity, soundEvent, entity.soundSource, volume, pitch)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Minecraft.getInstance().soundManager.play(SimpleSoundInstance.forUI(soundEvent, volume, pitch))
|
Minecraft.getInstance().soundManager.play(UIEntitySoundInstance(soundEvent, volume, pitch))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -19,6 +19,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Bone
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Bone
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
|
import com.cobblemon.mod.common.client.render.models.blockbench.repository.RenderContext
|
||||||
import com.cobblemon.mod.common.client.sound.instances.AlphaCrySoundInstance
|
import com.cobblemon.mod.common.client.sound.instances.AlphaCrySoundInstance
|
||||||
|
import com.cobblemon.mod.common.client.sound.instances.UIEntitySoundInstance
|
||||||
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
import com.cobblemon.mod.common.entity.pokemon.PokemonEntity
|
||||||
import com.cobblemon.mod.common.util.effectiveName
|
import com.cobblemon.mod.common.util.effectiveName
|
||||||
import com.cobblemon.mod.common.util.genericRuntime
|
import com.cobblemon.mod.common.util.genericRuntime
|
||||||
@@ -31,7 +32,6 @@ import net.minecraft.client.Minecraft
|
|||||||
import net.minecraft.client.model.geom.ModelPart
|
import net.minecraft.client.model.geom.ModelPart
|
||||||
import net.minecraft.client.multiplayer.ClientLevel
|
import net.minecraft.client.multiplayer.ClientLevel
|
||||||
import net.minecraft.client.resources.sounds.EntityBoundSoundInstance
|
import net.minecraft.client.resources.sounds.EntityBoundSoundInstance
|
||||||
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
|
||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.sounds.SoundEvent
|
import net.minecraft.sounds.SoundEvent
|
||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
@@ -121,7 +121,7 @@ class BedrockSoundKeyframe(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Minecraft.getInstance().soundManager.play(SimpleSoundInstance.forUI(soundEvent, 1F, 1F))
|
Minecraft.getInstance().soundManager.play(UIEntitySoundInstance(soundEvent))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonP
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
import com.cobblemon.mod.common.entity.PoseType
|
||||||
|
import com.cobblemon.mod.common.util.asExpressionLike
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
import net.minecraft.client.model.geom.ModelPart
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
|
|
||||||
@@ -28,6 +29,8 @@ class MasquerainModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame
|
|||||||
lateinit var walk: Pose
|
lateinit var walk: Pose
|
||||||
lateinit var standing: Pose
|
lateinit var standing: Pose
|
||||||
override fun registerPoses() {
|
override fun registerPoses() {
|
||||||
|
animations["cry"] = "q.bedrock_stateful('masquerain', 'cry')".asExpressionLike()
|
||||||
|
|
||||||
val blink = quirk { bedrockStateful("masquerain", "blink") }
|
val blink = quirk { bedrockStateful("masquerain", "blink") }
|
||||||
standing = registerPose(
|
standing = registerPose(
|
||||||
poseName = "standing",
|
poseName = "standing",
|
||||||
|
|||||||
+3
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonP
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
import com.cobblemon.mod.common.entity.PoseType
|
||||||
|
import com.cobblemon.mod.common.util.asExpressionLike
|
||||||
import com.cobblemon.mod.common.util.isInWater
|
import com.cobblemon.mod.common.util.isInWater
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
import net.minecraft.client.model.geom.ModelPart
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
@@ -36,6 +37,8 @@ class SurskitModel(root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
|||||||
val wateroffset = -8
|
val wateroffset = -8
|
||||||
|
|
||||||
override fun registerPoses() {
|
override fun registerPoses() {
|
||||||
|
animations["cry"] = "q.bedrock_stateful('surskit', 'cry')".asExpressionLike()
|
||||||
|
|
||||||
val blink = quirk { bedrockStateful("surskit", "blink") }
|
val blink = quirk { bedrockStateful("surskit", "blink") }
|
||||||
standing = registerPose(
|
standing = registerPose(
|
||||||
poseName = "standing",
|
poseName = "standing",
|
||||||
|
|||||||
+3
@@ -14,6 +14,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonP
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.ModelPartTransformation
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
import com.cobblemon.mod.common.entity.PoseType
|
||||||
|
import com.cobblemon.mod.common.util.asExpressionLike
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
import net.minecraft.client.model.geom.ModelPart
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
|
|
||||||
@@ -36,6 +37,8 @@ class CombeeModel (root: ModelPart) : PokemonPosableModel(root) {
|
|||||||
val shoulderZOffset = 8
|
val shoulderZOffset = 8
|
||||||
|
|
||||||
override fun registerPoses() {
|
override fun registerPoses() {
|
||||||
|
animations["cry"] = "q.bedrock_stateful('combee', 'cry')".asExpressionLike()
|
||||||
|
|
||||||
val blink1 = quirk { bedrockStateful("combee", "blink_right") }
|
val blink1 = quirk { bedrockStateful("combee", "blink_right") }
|
||||||
val blink2 = quirk { bedrockStateful("combee", "blink_gender") }
|
val blink2 = quirk { bedrockStateful("combee", "blink_gender") }
|
||||||
val blink3 = quirk { bedrockStateful("combee", "blink_left") }
|
val blink3 = quirk { bedrockStateful("combee", "blink_left") }
|
||||||
|
|||||||
+3
@@ -12,6 +12,7 @@ import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonP
|
|||||||
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
import com.cobblemon.mod.common.client.render.models.blockbench.PosableState
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
import com.cobblemon.mod.common.entity.PoseType
|
||||||
|
import com.cobblemon.mod.common.util.asExpressionLike
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
import net.minecraft.client.model.geom.ModelPart
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
|
|
||||||
@@ -30,6 +31,8 @@ class VespiquenModel (root: ModelPart) : PokemonPosableModel(root) {
|
|||||||
lateinit var standing: Pose
|
lateinit var standing: Pose
|
||||||
|
|
||||||
override fun registerPoses() {
|
override fun registerPoses() {
|
||||||
|
animations["cry"] = "q.bedrock_stateful('vespiquen', 'cry')".asExpressionLike()
|
||||||
|
|
||||||
val blink1 = quirk { bedrockStateful("vespiquen", "blink") }
|
val blink1 = quirk { bedrockStateful("vespiquen", "blink") }
|
||||||
val wingsleep = quirk { bedrockStateful("vespiquen", "sleep_flap") }
|
val wingsleep = quirk { bedrockStateful("vespiquen", "sleep_flap") }
|
||||||
|
|
||||||
|
|||||||
-62
@@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 Cobblemon Contributors
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
|
|
||||||
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
|
||||||
import net.minecraft.world.phys.Vec3
|
|
||||||
|
|
||||||
class SerperiorModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
|
||||||
override val rootPart = root.registerChildWithAllChildren("serperior")
|
|
||||||
override val head = getPart("head_ai")
|
|
||||||
|
|
||||||
override var portraitScale = 2.5F
|
|
||||||
override var portraitTranslation = Vec3(-0.3, 1.25, 0.0)
|
|
||||||
|
|
||||||
override var profileScale = 0.6F
|
|
||||||
override var profileTranslation = Vec3(0.0, 0.8, 0.0)
|
|
||||||
|
|
||||||
lateinit var standing: Pose
|
|
||||||
lateinit var walk: Pose
|
|
||||||
lateinit var sleep: Pose
|
|
||||||
|
|
||||||
override val cryAnimation = CryProvider { bedrockStateful("serperior", "cry") }
|
|
||||||
|
|
||||||
override fun registerPoses() {
|
|
||||||
val blink = quirk { bedrockStateful("serperior", "blink") }
|
|
||||||
sleep = registerPose(
|
|
||||||
poseType = PoseType.SLEEP,
|
|
||||||
animations = arrayOf(bedrock("serperior", "sleep"))
|
|
||||||
)
|
|
||||||
|
|
||||||
standing = registerPose(
|
|
||||||
poseName = "standing",
|
|
||||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("serperior", "ground_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
walk = registerPose(
|
|
||||||
poseName = "walk",
|
|
||||||
poseTypes = PoseType.MOVING_POSES,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("serperior", "ground_walk")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-70
@@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 Cobblemon Contributors
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
|
|
||||||
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
|
||||||
import net.minecraft.world.phys.Vec3
|
|
||||||
|
|
||||||
class ServineModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
|
||||||
override val rootPart = root.registerChildWithAllChildren("servine")
|
|
||||||
override val head = getPart("head_ai")
|
|
||||||
override val rightArm = getPart("arm_right")
|
|
||||||
override val leftArm = getPart("arm_left")
|
|
||||||
override val rightLeg = getPart("leg_right")
|
|
||||||
override val leftLeg = getPart("leg_left")
|
|
||||||
|
|
||||||
override var portraitScale = 2.6F
|
|
||||||
override var portraitTranslation = Vec3(-0.15, 0.75, 0.0)
|
|
||||||
override var profileScale = 0.8F
|
|
||||||
override var profileTranslation = Vec3(0.0, 0.55, 0.0)
|
|
||||||
|
|
||||||
lateinit var sleep: Pose
|
|
||||||
lateinit var standing: Pose
|
|
||||||
lateinit var walk: Pose
|
|
||||||
|
|
||||||
override val cryAnimation = CryProvider { bedrockStateful("servine", "cry") }
|
|
||||||
|
|
||||||
override fun registerPoses() {
|
|
||||||
val blink = quirk { bedrockStateful("servine", "blink") }
|
|
||||||
sleep = registerPose(
|
|
||||||
poseType = PoseType.SLEEP,
|
|
||||||
transformTicks = 10,
|
|
||||||
animations = arrayOf(bedrock("servine", "sleep"))
|
|
||||||
)
|
|
||||||
|
|
||||||
standing = registerPose(
|
|
||||||
poseName = "standing",
|
|
||||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
|
||||||
transformTicks = 10,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("servine", "ground_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
walk = registerPose(
|
|
||||||
poseName = "walking",
|
|
||||||
poseTypes = PoseType.MOVING_POSES,
|
|
||||||
transformTicks = 10,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("servine", "ground_walk")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-70
@@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 Cobblemon Contributors
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen5
|
|
||||||
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BimanualFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.BipedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
|
||||||
import net.minecraft.world.phys.Vec3
|
|
||||||
|
|
||||||
class SnivyModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame, BipedFrame, BimanualFrame {
|
|
||||||
override val rootPart = root.registerChildWithAllChildren("snivy")
|
|
||||||
override val head = getPart("head_ai")
|
|
||||||
override val rightArm = getPart("arm_right")
|
|
||||||
override val leftArm = getPart("arm_left")
|
|
||||||
override val rightLeg = getPart("leg_right")
|
|
||||||
override val leftLeg = getPart("leg_left")
|
|
||||||
|
|
||||||
override var portraitScale = 2.0F
|
|
||||||
override var portraitTranslation = Vec3(-0.15, 0.32, 0.0)
|
|
||||||
override var profileScale = 0.8F
|
|
||||||
override var profileTranslation = Vec3(0.0, 0.55, 0.0)
|
|
||||||
|
|
||||||
lateinit var sleep: Pose
|
|
||||||
lateinit var standing: Pose
|
|
||||||
lateinit var walk: Pose
|
|
||||||
|
|
||||||
override val cryAnimation = CryProvider { bedrockStateful("snivy", "cry") }
|
|
||||||
|
|
||||||
override fun registerPoses() {
|
|
||||||
val blink = quirk { bedrockStateful("snivy", "blink") }
|
|
||||||
sleep = registerPose(
|
|
||||||
poseType = PoseType.SLEEP,
|
|
||||||
transformTicks = 10,
|
|
||||||
animations = arrayOf(bedrock("snivy", "sleep"))
|
|
||||||
)
|
|
||||||
|
|
||||||
standing = registerPose(
|
|
||||||
poseName = "standing",
|
|
||||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
|
||||||
transformTicks = 10,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("snivy", "ground_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
walk = registerPose(
|
|
||||||
poseName = "walking",
|
|
||||||
poseTypes = PoseType.MOVING_POSES,
|
|
||||||
transformTicks = 10,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("snivy", "ground_walk")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-85
@@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 Cobblemon Contributors
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
|
|
||||||
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.Pose
|
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
|
||||||
import net.minecraft.world.phys.Vec3
|
|
||||||
|
|
||||||
class GourgeistModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
|
||||||
override val rootPart = root.registerChildWithAllChildren("gourgeist")
|
|
||||||
override val head = getPart("head")
|
|
||||||
|
|
||||||
override var portraitScale = 4.0F
|
|
||||||
override var portraitTranslation = Vec3(-0.1, 0.6, 0.0)
|
|
||||||
|
|
||||||
override var profileScale = 0.8F
|
|
||||||
override var profileTranslation = Vec3(0.0, 0.55, 0.0)
|
|
||||||
|
|
||||||
lateinit var standing: Pose
|
|
||||||
lateinit var walk: Pose
|
|
||||||
lateinit var hovering: Pose
|
|
||||||
lateinit var fly: Pose
|
|
||||||
lateinit var sleep: Pose
|
|
||||||
|
|
||||||
override val cryAnimation = CryProvider { bedrockStateful("gourgeist", "cry") }
|
|
||||||
|
|
||||||
override fun registerPoses() {
|
|
||||||
val blink = quirk { bedrockStateful("gourgeist", "blink") }
|
|
||||||
standing = registerPose(
|
|
||||||
poseName = "standing",
|
|
||||||
poseTypes = PoseType.UI_POSES + PoseType.STAND,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("gourgeist", "ground_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
walk = registerPose(
|
|
||||||
poseName = "walk",
|
|
||||||
poseType = PoseType.WALK,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("gourgeist", "ground_walk")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
hovering = registerPose(
|
|
||||||
poseName = "hovering",
|
|
||||||
poseType = PoseType.HOVER,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("gourgeist", "air_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
fly = registerPose(
|
|
||||||
poseName = "fly",
|
|
||||||
poseType = PoseType.FLY,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("gourgeist", "air_fly")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
sleep = registerPose(
|
|
||||||
poseName = "sleep",
|
|
||||||
poseType = PoseType.SLEEP,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("gourgeist", "sleep")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-77
@@ -1,77 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 Cobblemon Contributors
|
|
||||||
*
|
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.cobblemon.mod.common.client.render.models.blockbench.pokemon.gen6
|
|
||||||
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.frame.HeadedFrame
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.CryProvider
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pokemon.PokemonPosableModel
|
|
||||||
import com.cobblemon.mod.common.client.render.models.blockbench.pose.CobblemonPose
|
|
||||||
import com.cobblemon.mod.common.entity.PoseType
|
|
||||||
import net.minecraft.client.model.geom.ModelPart
|
|
||||||
import net.minecraft.world.phys.Vec3
|
|
||||||
|
|
||||||
class PumpkabooModel (root: ModelPart) : PokemonPosableModel(root), HeadedFrame {
|
|
||||||
override val rootPart = root.registerChildWithAllChildren("pumpkaboo")
|
|
||||||
override val head = getPart("head")
|
|
||||||
|
|
||||||
override var portraitScale = 3.5F
|
|
||||||
override var portraitTranslation = Vec3(0.0, -1.5, 0.0)
|
|
||||||
|
|
||||||
override var profileScale = 1.0F
|
|
||||||
override var profileTranslation = Vec3(0.0, 0.25, 0.0)
|
|
||||||
|
|
||||||
lateinit var standing: CobblemonPose
|
|
||||||
lateinit var walk: CobblemonPose
|
|
||||||
lateinit var battleidle: CobblemonPose
|
|
||||||
lateinit var sleep: CobblemonPose
|
|
||||||
|
|
||||||
override val cryAnimation = CryProvider { bedrockStateful("pumpkaboo", "cry") }
|
|
||||||
|
|
||||||
override fun registerPoses() {
|
|
||||||
val blink = quirk { bedrockStateful("pumpkaboo", "blink") }
|
|
||||||
val quirk = quirk { bedrockStateful("pumpkaboo", "quirk_idle") }
|
|
||||||
|
|
||||||
sleep = registerPose(
|
|
||||||
poseName = "sleep",
|
|
||||||
poseType = PoseType.SLEEP,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("pumpkaboo", "sleep")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
standing = registerPose(
|
|
||||||
poseName = "standing",
|
|
||||||
poseTypes = PoseType.STATIONARY_POSES + PoseType.UI_POSES,
|
|
||||||
quirks = arrayOf(blink, quirk),
|
|
||||||
animations = arrayOf(
|
|
||||||
singleBoneLook(),
|
|
||||||
bedrock("pumpkaboo", "ground_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
walk = registerPose(
|
|
||||||
poseName = "walk",
|
|
||||||
poseTypes = PoseType.MOVING_POSES,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("pumpkaboo", "ground_walk")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
battleidle = registerPose(
|
|
||||||
poseName = "battleidle",
|
|
||||||
poseTypes = PoseType.STATIONARY_POSES,
|
|
||||||
quirks = arrayOf(blink),
|
|
||||||
animations = arrayOf(
|
|
||||||
bedrock("pumpkaboo", "battle_idle")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-5
@@ -322,8 +322,6 @@ object VaryingModelRepository {
|
|||||||
inbuilt("loudred", :: LoudredModel)
|
inbuilt("loudred", :: LoudredModel)
|
||||||
inbuilt("exploud", :: ExploudModel)
|
inbuilt("exploud", :: ExploudModel)
|
||||||
inbuilt("cryogonal", :: CryogonalModel)
|
inbuilt("cryogonal", :: CryogonalModel)
|
||||||
inbuilt("pumpkaboo", :: PumpkabooModel)
|
|
||||||
inbuilt("gourgeist", :: GourgeistModel)
|
|
||||||
inbuilt("eiscue", :: EiscueModel)
|
inbuilt("eiscue", :: EiscueModel)
|
||||||
inbuilt("wooloo", :: WoolooModel)
|
inbuilt("wooloo", :: WoolooModel)
|
||||||
inbuilt("dubwool", :: DubwoolModel)
|
inbuilt("dubwool", :: DubwoolModel)
|
||||||
@@ -340,9 +338,6 @@ object VaryingModelRepository {
|
|||||||
inbuilt("thwackey", ::ThwackeyModel)
|
inbuilt("thwackey", ::ThwackeyModel)
|
||||||
inbuilt("rillaboom", ::RillaboomModel)
|
inbuilt("rillaboom", ::RillaboomModel)
|
||||||
inbuilt("samurott", ::SamurottModel)
|
inbuilt("samurott", ::SamurottModel)
|
||||||
inbuilt("snivy", ::SnivyModel)
|
|
||||||
inbuilt("servine", ::ServineModel)
|
|
||||||
inbuilt("serperior", ::SerperiorModel)
|
|
||||||
inbuilt("slugma", ::SlugmaModel)
|
inbuilt("slugma", ::SlugmaModel)
|
||||||
inbuilt("magcargo", ::MagcargoModel)
|
inbuilt("magcargo", ::MagcargoModel)
|
||||||
inbuilt("slugma_shiny", ::SlugmaShinyModel)
|
inbuilt("slugma_shiny", ::SlugmaShinyModel)
|
||||||
|
|||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 Cobblemon Contributors
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.cobblemon.mod.common.client.sound.instances
|
||||||
|
|
||||||
|
import net.minecraft.client.resources.sounds.SimpleSoundInstance
|
||||||
|
import net.minecraft.client.resources.sounds.SoundInstance
|
||||||
|
import net.minecraft.sounds.SoundEvent
|
||||||
|
import net.minecraft.sounds.SoundSource
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plays a sound for a Pokémon rendered in a GUI, where there is no entity to take the sound source from.
|
||||||
|
* Unlike [SimpleSoundInstance.forUI] this uses [SoundSource.NEUTRAL] so the Friendly Creatures slider applies.
|
||||||
|
*/
|
||||||
|
class UIEntitySoundInstance(sound: SoundEvent, volume: Float = 1F, pitch: Float = 1F) :
|
||||||
|
SimpleSoundInstance(sound.location, SoundSource.NEUTRAL, volume, pitch, SoundInstance.createUnseededRandom(),
|
||||||
|
false, 0, SoundInstance.Attenuation.NONE, 0.0, 0.0, 0.0, true)
|
||||||
@@ -164,6 +164,9 @@ class CobblemonConfig {
|
|||||||
@CobblemonConfigField(Category.Pokemon, lang = "experience_multiplier", SERVER)
|
@CobblemonConfigField(Category.Pokemon, lang = "experience_multiplier", SERVER)
|
||||||
var experienceMultiplier = 2F
|
var experienceMultiplier = 2F
|
||||||
|
|
||||||
|
@CobblemonConfigField(Category.Pokemon, lang = "predation_chance", SERVER)
|
||||||
|
var predationChance = 0.05F
|
||||||
|
|
||||||
@CobblemonConfigField(Category.Spawning, lang = "pokemon_per_chunk", SERVER)
|
@CobblemonConfigField(Category.Spawning, lang = "pokemon_per_chunk", SERVER)
|
||||||
var pokemonPerChunk = 1F
|
var pokemonPerChunk = 1F
|
||||||
|
|
||||||
|
|||||||
@@ -269,6 +269,7 @@ class EmptyPokeBallEntity : ThrowableItemProjectile, PosableEntity, WaterDragMod
|
|||||||
attemptCatch(pokemonEntity)
|
attemptCatch(pokemonEntity)
|
||||||
},
|
},
|
||||||
ifCanceled = {
|
ifCanceled = {
|
||||||
|
captureFuture.complete(false)
|
||||||
drop()
|
drop()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1294,16 +1294,7 @@ open class PokemonEntity(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun showInteractionWheel(player: ServerPlayer, itemStack: ItemStack) {
|
private fun showInteractionWheel(player: ServerPlayer, itemStack: ItemStack) {
|
||||||
val canRide = ifRidingAvailableSupply(false) { behaviour, settings, state ->
|
val canRide = isRideableFor(player)
|
||||||
if (platform != PlatformType.NONE) return@ifRidingAvailableSupply false
|
|
||||||
if (tethering != null) return@ifRidingAvailableSupply false;
|
|
||||||
if (seats.isEmpty()) return@ifRidingAvailableSupply false;
|
|
||||||
if ((owner as? ServerPlayer)?.isInBattle() == true) return@ifRidingAvailableSupply false;
|
|
||||||
if (this.owner != player && this.passengers.isEmpty()) return@ifRidingAvailableSupply false;
|
|
||||||
if(pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) return@ifRidingAvailableSupply false;
|
|
||||||
if(beamMode == 3) return@ifRidingAvailableSupply false;
|
|
||||||
return@ifRidingAvailableSupply behaviour.isActive(settings, state, this);
|
|
||||||
}
|
|
||||||
if (pokemon.getOwnerPlayer() == player) {
|
if (pokemon.getOwnerPlayer() == player) {
|
||||||
val cosmeticItemDefinition = CobblemonCosmeticItems.findValidCosmeticForPokemonAndItem(
|
val cosmeticItemDefinition = CobblemonCosmeticItems.findValidCosmeticForPokemonAndItem(
|
||||||
player.level().registryAccess(),
|
player.level().registryAccess(),
|
||||||
@@ -1325,6 +1316,18 @@ open class PokemonEntity(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isRideableFor(player: ServerPlayer): Boolean = ifRidingAvailableSupply(false) canRide@{ behaviour, settings, state ->
|
||||||
|
if (!player.canInteractWithEntity(this, player.entityInteractionRange())) return@canRide false
|
||||||
|
if (platform != PlatformType.NONE) return@canRide false
|
||||||
|
if (tethering != null) return@canRide false
|
||||||
|
if (seats.isEmpty()) return@canRide false
|
||||||
|
if ((owner as? ServerPlayer)?.isInBattle() == true) return@canRide false
|
||||||
|
if (this.owner != player && this.passengers.isEmpty()) return@canRide false
|
||||||
|
if (pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) return@canRide false
|
||||||
|
if (beamMode == 3) return@canRide false
|
||||||
|
return@canRide behaviour.isActive(settings, state, this)
|
||||||
|
}
|
||||||
|
|
||||||
override fun getDimensions(pose: Pose): EntityDimensions {
|
override fun getDimensions(pose: Pose): EntityDimensions {
|
||||||
val scale = effects.mockEffect?.scale ?: (form.baseScale * pokemon.effectiveScale)
|
val scale = effects.mockEffect?.scale ?: (form.baseScale * pokemon.effectiveScale)
|
||||||
var result = this.exposedForm.hitbox.scale(scale)
|
var result = this.exposedForm.hitbox.scale(scale)
|
||||||
@@ -1606,9 +1609,8 @@ open class PokemonEntity(
|
|||||||
|| stack.`is`(CobblemonItemTags.WHITELISTED_ITEMS_TO_HOLD)
|
|| stack.`is`(CobblemonItemTags.WHITELISTED_ITEMS_TO_HOLD)
|
||||||
|
|
||||||
fun tryRidingPokemon(player: ServerPlayer): Boolean {
|
fun tryRidingPokemon(player: ServerPlayer): Boolean {
|
||||||
if (pokemon.effectiveScale < Cobblemon.config.minimumRidingScale) {
|
if (!isRideableFor(player)) return false
|
||||||
return false
|
|
||||||
}
|
|
||||||
val event = RidePokemonEvent.Pre(player, this)
|
val event = RidePokemonEvent.Pre(player, this)
|
||||||
CobblemonEvents.RIDE_EVENT_PRE.post(event)
|
CobblemonEvents.RIDE_EVENT_PRE.post(event)
|
||||||
if (!event.isCanceled) {
|
if (!event.isCanceled) {
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ object PlatformEvents {
|
|||||||
@JvmField
|
@JvmField
|
||||||
val CLIENT_PLAYER_LOGOUT = EventObservable<ClientPlayerEvent.Logout>()
|
val CLIENT_PLAYER_LOGOUT = EventObservable<ClientPlayerEvent.Logout>()
|
||||||
@JvmField
|
@JvmField
|
||||||
|
val PLAYER_RESPAWN = EventObservable<ServerPlayerEvent.Respawn>()
|
||||||
|
@JvmField
|
||||||
val PLAYER_DEATH = CancelableObservable<ServerPlayerEvent.Death>()
|
val PLAYER_DEATH = CancelableObservable<ServerPlayerEvent.Death>()
|
||||||
@JvmField
|
@JvmField
|
||||||
val RIGHT_CLICK_BLOCK = CancelableObservable<ServerPlayerEvent.RightClickBlock>()
|
val RIGHT_CLICK_BLOCK = CancelableObservable<ServerPlayerEvent.RightClickBlock>()
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ interface ServerPlayerEvent {
|
|||||||
*/
|
*/
|
||||||
data class Logout(override val player: ServerPlayer) : ServerPlayerEvent
|
data class Logout(override val player: ServerPlayer) : ServerPlayerEvent
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired when the [player] respawns (either by coming back from the end or dying).
|
||||||
|
*/
|
||||||
|
data class Respawn(override val player: ServerPlayer) : ServerPlayerEvent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fired when the [player] dies.
|
* Fired when the [player] dies.
|
||||||
* If canceled the death will be prevented but healing is required in order to not be stuck in a loop.
|
* If canceled the death will be prevented but healing is required in order to not be stuck in a loop.
|
||||||
|
|||||||
+8
-3
@@ -13,6 +13,7 @@ import com.cobblemon.mod.common.api.abilities.Abilities
|
|||||||
import com.cobblemon.mod.common.api.data.DataRegistry
|
import com.cobblemon.mod.common.api.data.DataRegistry
|
||||||
import com.cobblemon.mod.common.api.pokeball.PokeBalls
|
import com.cobblemon.mod.common.api.pokeball.PokeBalls
|
||||||
import com.cobblemon.mod.common.api.pokemon.Natures
|
import com.cobblemon.mod.common.api.pokemon.Natures
|
||||||
|
import com.cobblemon.mod.common.api.pokemon.feature.AbstractChoiceSpeciesFeatureProvider
|
||||||
import com.cobblemon.mod.common.api.pokemon.stats.Stats
|
import com.cobblemon.mod.common.api.pokemon.stats.Stats
|
||||||
import com.cobblemon.mod.common.api.pokemon.status.Statuses
|
import com.cobblemon.mod.common.api.pokemon.status.Statuses
|
||||||
import com.cobblemon.mod.common.api.properties.CustomPokemonProperty
|
import com.cobblemon.mod.common.api.properties.CustomPokemonProperty
|
||||||
@@ -135,7 +136,7 @@ internal object PropertiesCompletionProvider : DataRegistry {
|
|||||||
this.inject(setOf("level", "lvl", "l"), setOf("1", "${Cobblemon.config.maxPokemonLevel}") )
|
this.inject(setOf("level", "lvl", "l"), setOf("1", "${Cobblemon.config.maxPokemonLevel}") )
|
||||||
this.inject(setOf("shiny", "s"), setOf("yes", "no"))
|
this.inject(setOf("shiny", "s"), setOf("yes", "no"))
|
||||||
this.inject(setOf("alpha", "is_alpha"), setOf("yes", "no"))
|
this.inject(setOf("alpha", "is_alpha"), setOf("yes", "no"))
|
||||||
this.inject(setOf("gender"), Gender.values().map { it.name.lowercase() })
|
this.inject(setOf("gender"), Gender.entries.map { it.name.lowercase() })
|
||||||
this.inject(setOf("friendship"), setOf("0", Cobblemon.config.maxPokemonFriendship.toString()))
|
this.inject(setOf("friendship"), setOf("0", Cobblemon.config.maxPokemonFriendship.toString()))
|
||||||
this.inject(setOf("fullness"), setOf("0", "255"))
|
this.inject(setOf("fullness"), setOf("0", "255"))
|
||||||
this.inject(setOf("pokeball"), PokeBalls.all().map { it.name.simplify() })
|
this.inject(setOf("pokeball"), PokeBalls.all().map { it.name.simplify() })
|
||||||
@@ -165,7 +166,11 @@ internal object PropertiesCompletionProvider : DataRegistry {
|
|||||||
private fun addCustom() {
|
private fun addCustom() {
|
||||||
CustomPokemonProperty.properties.forEach { property ->
|
CustomPokemonProperty.properties.forEach { property ->
|
||||||
// We won't tab complete properties that have no key attached to them as it would be fairly hard to determine which one to suggest
|
// We won't tab complete properties that have no key attached to them as it would be fairly hard to determine which one to suggest
|
||||||
if (property.needsKey) {
|
if (property.needsKey && property !is AbstractChoiceSpeciesFeatureProvider<*>) {
|
||||||
|
this.inject(property.keys, property.examples())
|
||||||
|
}
|
||||||
|
// Except choice features that fill examples with all available choices - Gito
|
||||||
|
if (property is AbstractChoiceSpeciesFeatureProvider<*>) {
|
||||||
this.inject(property.keys, property.examples())
|
this.inject(property.keys, property.examples())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -176,4 +181,4 @@ internal object PropertiesCompletionProvider : DataRegistry {
|
|||||||
val suggestions: Collection<String>
|
val suggestions: Collection<String>
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -26,5 +26,6 @@ object CobblemonGameRules {
|
|||||||
val SHINY_STARTERS: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("doShinyStarters", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
val SHINY_STARTERS: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("doShinyStarters", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
||||||
@JvmField
|
@JvmField
|
||||||
val HEALERS_HEAL_PC: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("healersHealPC", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
val HEALERS_HEAL_PC: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("healersHealPC", GameRules.Category.MISC, BooleanRuleInvoker.`cobblemon$create`(false))
|
||||||
|
@JvmField
|
||||||
|
val DO_POKEMON_PREDATION: GameRules.Key<GameRules.BooleanValue> = Cobblemon.implementation.registerGameRule("doPokemonPredation", GameRules.Category.MOBS, BooleanRuleInvoker.`cobblemon$create`(true))
|
||||||
}
|
}
|
||||||
+1
-1
@@ -217,7 +217,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"animation.raichu_cap.water_swim": {
|
"animation.raichu_cap.water_surface_swim": {
|
||||||
"loop": true,
|
"loop": true,
|
||||||
"animation_length": 1,
|
"animation_length": 1,
|
||||||
"bones": {
|
"bones": {
|
||||||
|
|||||||
+8
@@ -364,6 +364,14 @@
|
|||||||
"rotation": [-22.5, 0, 0]
|
"rotation": [-22.5, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.wurmple.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.wurmple.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
@@ -212,6 +212,14 @@
|
|||||||
"position": [0, 0, -0.1]
|
"position": [0, 0, -0.1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.silcoon.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.silcoon.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
@@ -361,6 +361,14 @@
|
|||||||
"rotation": [0, 20, 0]
|
"rotation": [0, 20, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.beautifly.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.beautifly.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
@@ -194,6 +194,14 @@
|
|||||||
"position": [0, 0, -0.1]
|
"position": [0, 0, -0.1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.cascoon.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.cascoon.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+24
@@ -255,6 +255,30 @@
|
|||||||
"position": [0, 0, -0.1]
|
"position": [0, 0, -0.1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.dustox.cry": {
|
||||||
|
"animation_length": 1,
|
||||||
|
"bones": {
|
||||||
|
"mouth_closed_smile": {
|
||||||
|
"position": {
|
||||||
|
"0.0": [0, 0, 0],
|
||||||
|
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||||
|
"0.625": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mouth_open": {
|
||||||
|
"position": {
|
||||||
|
"0.0": [0, 0, 0],
|
||||||
|
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||||
|
"0.625": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0833": {
|
||||||
|
"effect": "pokemon.dustox.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
@@ -149,6 +149,14 @@
|
|||||||
"rotation": [0, 0, 22.5]
|
"rotation": [0, 0, 22.5]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.surskit.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.surskit.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"geckolib_format_version": 2
|
"geckolib_format_version": 2
|
||||||
|
|||||||
+5
@@ -158,6 +158,11 @@
|
|||||||
"0.75": [0, 0, 0]
|
"0.75": [0, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.masquerain.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+5
@@ -447,6 +447,11 @@
|
|||||||
"1.5": [0, 0, 0]
|
"1.5": [0, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.starly.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -331,6 +331,11 @@
|
|||||||
"1.5": [0, 0, 0]
|
"1.5": [0, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.staravia.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"animation.staravia.blink": {
|
"animation.staravia.blink": {
|
||||||
|
|||||||
+5
@@ -464,6 +464,11 @@
|
|||||||
"1.5": [0, 0, 0]
|
"1.5": [0, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.combee.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -824,6 +824,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.vespiquen.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.vespiquen.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -589,7 +589,7 @@
|
|||||||
"animation.frogadier.battle_idle": {
|
"animation.frogadier.battle_idle": {
|
||||||
"loop": true,
|
"loop": true,
|
||||||
"bones": {
|
"bones": {
|
||||||
"frogadier": {
|
"body": {
|
||||||
"position": [0, -8, 0]
|
"position": [0, -8, 0]
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
|
|||||||
+24
@@ -400,6 +400,30 @@
|
|||||||
"position": [0, 0, -0.1]
|
"position": [0, 0, -0.1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.helioptile.cry": {
|
||||||
|
"animation_length": 1.2083,
|
||||||
|
"bones": {
|
||||||
|
"mouth_closed": {
|
||||||
|
"position": {
|
||||||
|
"0.0": [0, 0, 0],
|
||||||
|
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, 0.1]},
|
||||||
|
"1.1667": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mouth_open": {
|
||||||
|
"position": {
|
||||||
|
"0.0": [0, 0, 0],
|
||||||
|
"0.0833": {"pre": [0, 0, 0], "post": [0, 0, -0.1]},
|
||||||
|
"1.1667": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0833": {
|
||||||
|
"effect": "pokemon.helioptile.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
@@ -563,6 +563,14 @@
|
|||||||
"position": [0.1, 0, 0]
|
"position": [0.1, 0, 0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.heliolisk.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.heliolisk.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+5
@@ -125,6 +125,11 @@
|
|||||||
"0.5417": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
"0.5417": {"pre": [0, 0, -0.1], "post": [0, 0, 0]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0417": {
|
||||||
|
"effect": "pokemon.grubbin.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"animation.grubbin.physical": {
|
"animation.grubbin.physical": {
|
||||||
|
|||||||
+5
@@ -38,6 +38,11 @@
|
|||||||
"0.625": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
"0.625": {"pre": [0, 0, 0.1], "post": [0, 0, 0]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0833": {
|
||||||
|
"effect": "pokemon.charjabug.cry"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"animation.charjabug.ditto_face": {
|
"animation.charjabug.ditto_face": {
|
||||||
|
|||||||
+6098
-351
File diff suppressed because it is too large
Load Diff
+8
@@ -326,6 +326,14 @@
|
|||||||
"position": [0, 0, -0.1]
|
"position": [0, 0, -0.1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"animation.runerigus.cry": {
|
||||||
|
"animation_length": 1.25,
|
||||||
|
"sound_effects": {
|
||||||
|
"0.0": {
|
||||||
|
"effect": "pokemon.runerigus.cry"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -68,7 +68,7 @@
|
|||||||
"parent": "torso",
|
"parent": "torso",
|
||||||
"pivot": [0, 13, 2],
|
"pivot": [0, 13, 2],
|
||||||
"locators": {
|
"locators": {
|
||||||
"seat": [0, 13, 2]
|
"seat_1": [0, 13, 2]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('pidgeot', 'cry')",
|
"cry": "q.bedrock_stateful('pidgeot', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('pidgeot', 'recoil')",
|
"recoil": "q.bedrock_stateful('pidgeot', 'recoil')",
|
||||||
"special": "q.bedrock_primary('pidgeot', 'special', q.curve('symmetrical'))"
|
"status": "q.bedrock_primary('pidgeot', 'status', q.curve('symmetrical_wide'))"
|
||||||
},
|
},
|
||||||
"firstPersonCameraOffset": {
|
"firstPersonCameraOffset": {
|
||||||
"seat_1": [0, 0.45, 0]
|
"seat_1": [0, 0.45, 0]
|
||||||
|
|||||||
+2
-2
@@ -64,7 +64,7 @@
|
|||||||
"q.sine_wing_flap(0.9, 0.9, 25, 'z', 'wing_open_left', 'wing_open_right')",
|
"q.sine_wing_flap(0.9, 0.9, 25, 'z', 'wing_open_left', 'wing_open_right')",
|
||||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||||
"q.look('head')",
|
"q.look('head')",
|
||||||
"q.bedrock('spearow', 'air_idle')"
|
"q.bedrock('spearow', 'ground_idle')"
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('spearow', 'blink')"],
|
"quirks": ["q.bedrock_quirk('spearow', 'blink')"],
|
||||||
"transformedParts": [
|
"transformedParts": [
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
"q.sine_wing_flap(0.9, 0.9, 25, 'z', 'wing_open_left', 'wing_open_right')",
|
"q.sine_wing_flap(0.9, 0.9, 25, 'z', 'wing_open_left', 'wing_open_right')",
|
||||||
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
"q.look('neck', 1, 1, 70, -10, 20, -20)",
|
||||||
"q.look('head')",
|
"q.look('head')",
|
||||||
"q.bedrock('spearow', 'air_idle')"
|
"q.bedrock('spearow', 'ground_idle')"
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('spearow', 'blink')"],
|
"quirks": ["q.bedrock_quirk('spearow', 'blink')"],
|
||||||
"transformedParts": [
|
"transformedParts": [
|
||||||
|
|||||||
-3
@@ -16,9 +16,6 @@
|
|||||||
"q.look('head_ai', 1, 1, 8, -18, 10, -10)",
|
"q.look('head_ai', 1, 1, 8, -18, 10, -10)",
|
||||||
"q.bedrock('oddish', 'battle_idle')"
|
"q.bedrock('oddish', 'battle_idle')"
|
||||||
],
|
],
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('oddish', 'battle_cry')"
|
|
||||||
},
|
|
||||||
"quirks": ["q.bedrock_quirk('oddish', 'blink')"]
|
"quirks": ["q.bedrock_quirk('oddish', 'blink')"]
|
||||||
},
|
},
|
||||||
"standing": {
|
"standing": {
|
||||||
|
|||||||
-3
@@ -16,9 +16,6 @@
|
|||||||
"q.look('head_ai', 1, 1, 6, -18, 10, -10)",
|
"q.look('head_ai', 1, 1, 6, -18, 10, -10)",
|
||||||
"q.bedrock('gloom', 'battle_idle')"
|
"q.bedrock('gloom', 'battle_idle')"
|
||||||
],
|
],
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('gloom', 'battle_cry')"
|
|
||||||
},
|
|
||||||
"quirks": ["q.bedrock_quirk('gloom', 'blink')"]
|
"quirks": ["q.bedrock_quirk('gloom', 'blink')"]
|
||||||
},
|
},
|
||||||
"standing": {
|
"standing": {
|
||||||
|
|||||||
-3
@@ -16,9 +16,6 @@
|
|||||||
"q.look('head_ai', 1, 1, 6, -18, 10, -10)",
|
"q.look('head_ai', 1, 1, 6, -18, 10, -10)",
|
||||||
"q.bedrock('vileplume', 'battle_idle')"
|
"q.bedrock('vileplume', 'battle_idle')"
|
||||||
],
|
],
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('vileplume', 'battle_cry')"
|
|
||||||
},
|
|
||||||
"quirks": [
|
"quirks": [
|
||||||
"q.bedrock_quirk('vileplume', 'blink')",
|
"q.bedrock_quirk('vileplume', 'blink')",
|
||||||
"q.bedrock_primary_quirk('vileplume', 'quirk', 20, 40, 1, q.curve('symmetrical_wide'))"
|
"q.bedrock_primary_quirk('vileplume', 'quirk', 20, 40, 1, q.curve('symmetrical_wide'))"
|
||||||
|
|||||||
-1
@@ -7,7 +7,6 @@
|
|||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('diglett', 'faint', q.curve('one'))",
|
"faint": "q.bedrock_primary('diglett', 'faint', q.curve('one'))",
|
||||||
"cry": "q.bedrock_stateful('diglett', 'cry')",
|
"cry": "q.bedrock_stateful('diglett', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('diglett', 'recoil')",
|
|
||||||
"physical": "q.bedrock_primary('diglett', 'physical', q.curve('symmetrical'))"
|
"physical": "q.bedrock_primary('diglett', 'physical', q.curve('symmetrical'))"
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
|
|||||||
+2
-2
@@ -5,9 +5,9 @@
|
|||||||
"profileTranslation": [0.0, 0.3, 0],
|
"profileTranslation": [0.0, 0.3, 0],
|
||||||
"rootBone": "diglett_alolan",
|
"rootBone": "diglett_alolan",
|
||||||
"animations": {
|
"animations": {
|
||||||
|
"faint": "q.bedrock_primary('diglett_alolan', 'faint', q.curve('one'))",
|
||||||
"cry": "q.bedrock_stateful('diglett_alolan', 'cry')",
|
"cry": "q.bedrock_stateful('diglett_alolan', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('diglett_alolan', 'recoil')",
|
"physical": "q.bedrock_primary('diglett_alolan', 'physical', q.curve('symmetrical_wide'))"
|
||||||
"physical": "q.bedrock_primary('diglett_alolan', 'physical', q.curve('symmetrical'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"standing": {
|
"standing": {
|
||||||
|
|||||||
-1
@@ -7,7 +7,6 @@
|
|||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('dugtrio', 'faint', q.curve('one'))",
|
"faint": "q.bedrock_primary('dugtrio', 'faint', q.curve('one'))",
|
||||||
"cry": "q.bedrock_stateful('dugtrio', 'cry')",
|
"cry": "q.bedrock_stateful('dugtrio', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('dugtrio', 'recoil')",
|
|
||||||
"physical": "q.bedrock_primary('dugtrio', 'physical', q.curve('symmetrical'))"
|
"physical": "q.bedrock_primary('dugtrio', 'physical', q.curve('symmetrical'))"
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
|
|||||||
+2
-2
@@ -5,9 +5,9 @@
|
|||||||
"profileTranslation": [0.0, 0.29, 0],
|
"profileTranslation": [0.0, 0.29, 0],
|
||||||
"rootBone": "dugtrio_alolan",
|
"rootBone": "dugtrio_alolan",
|
||||||
"animations": {
|
"animations": {
|
||||||
|
"faint": "q.bedrock_primary('dugtrio_alolan', 'faint', q.curve('one'))",
|
||||||
"cry": "q.bedrock_stateful('dugtrio_alolan', 'cry')",
|
"cry": "q.bedrock_stateful('dugtrio_alolan', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('dugtrio_alolan', 'recoil')",
|
"physical": "q.bedrock_primary('dugtrio_alolan', 'physical', q.curve('symmetrical_wide'))"
|
||||||
"physical": "q.bedrock_primary('dugtrio_alolan', 'physical', q.curve('symmetrical'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"standing": {
|
"standing": {
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@
|
|||||||
"namedAnimations": {
|
"namedAnimations": {
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
||||||
},
|
},
|
||||||
"animations": ["q.bedrock('tentacool', 'ground_sleep')"]
|
"animations": ["q.bedrock('tentacool', 'sleep')"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -108,7 +108,7 @@
|
|||||||
"namedAnimations": {
|
"namedAnimations": {
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
||||||
},
|
},
|
||||||
"animations": ["q.bedrock('tentacruel', 'sleep')"]
|
"animations": ["q.bedrock('tentacruel', 'water_sleep')"]
|
||||||
},
|
},
|
||||||
"ground-sleep": {
|
"ground-sleep": {
|
||||||
"poseTypes": ["SLEEP"],
|
"poseTypes": ["SLEEP"],
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
"namedAnimations": {
|
"namedAnimations": {
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
||||||
},
|
},
|
||||||
"animations": ["q.bedrock('tentacruel', 'sleep')"]
|
"animations": ["q.bedrock('tentacruel', 'ground_sleep')"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-2
@@ -6,8 +6,7 @@
|
|||||||
"rootBone": "golem",
|
"rootBone": "golem",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('golem', 'cry')",
|
"cry": "q.bedrock_stateful('golem', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('golem', 'recoil')",
|
"recoil": "q.bedrock_stateful('golem', 'recoil')"
|
||||||
"status": "q.bedrock_stateful('golem', 'status', q.curve('symmetrical_wide'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
+1
-2
@@ -6,8 +6,7 @@
|
|||||||
"rootBone": "golem",
|
"rootBone": "golem",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('golem_alolan', 'cry')",
|
"cry": "q.bedrock_stateful('golem_alolan', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('golem_alolan', 'recoil')",
|
"recoil": "q.bedrock_stateful('golem_alolan', 'recoil')"
|
||||||
"status": "q.bedrock_stateful('golem_alolan', 'status', q.curve('symmetrical_wide'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
+1
-2
@@ -6,8 +6,7 @@
|
|||||||
"rootBone": "grimer",
|
"rootBone": "grimer",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('grimer', 'cry')",
|
"cry": "q.bedrock_stateful('grimer', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('grimer', 'recoil')",
|
"recoil": "q.bedrock_stateful('grimer', 'recoil')"
|
||||||
"status": "q.bedrock_stateful('grimer', 'status', q.curve('symmetrical_wide'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
+1
-2
@@ -6,8 +6,7 @@
|
|||||||
"rootBone": "grimer_alola",
|
"rootBone": "grimer_alola",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('grimer', 'cry')",
|
"cry": "q.bedrock_stateful('grimer', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('grimer', 'recoil')",
|
"recoil": "q.bedrock_stateful('grimer', 'recoil')"
|
||||||
"status": "q.bedrock_stateful('grimer', 'status', q.curve('symmetrical_wide'))"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"portraitScale": 1.82,
|
"portraitScale": 1.82,
|
||||||
"portraitTranslation": [-0.01, 0.64, 0],
|
"portraitTranslation": [0.15, 0.52, 0],
|
||||||
"profileScale": 0.84,
|
"profileScale": 0.84,
|
||||||
"profileTranslation": [0, 0.51, 0],
|
"profileTranslation": [0, 0.51, 0],
|
||||||
"rootBone": "marowak_alolan",
|
"rootBone": "marowak_alolan",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
},
|
},
|
||||||
"portrait": {
|
"portrait": {
|
||||||
"poseTypes": ["PORTRAIT"],
|
"poseTypes": ["PORTRAIT"],
|
||||||
"animations": ["q.bedrock('marowak_alolan', 'portrait')"]
|
"animations": ["q.bedrock('marowak_alolan', 'ground_idle')"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, 0.46, 0],
|
"profileTranslation": [0, 0.46, 0],
|
||||||
"rootBone": "weezing",
|
"rootBone": "weezing",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('weezing', 'faint')",
|
|
||||||
"cry": "q.bedrock_stateful('weezing', 'cry')",
|
"cry": "q.bedrock_stateful('weezing', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('weezing', 'recoil')",
|
"recoil": "q.bedrock_stateful('weezing', 'recoil')",
|
||||||
"physical": "q.bedrock_primary('weezing', 'physical', q.curve('symmetrical_wide'))",
|
"physical": "q.bedrock_primary('weezing', 'physical', q.curve('symmetrical_wide'))",
|
||||||
@@ -57,7 +56,7 @@
|
|||||||
"namedAnimations": {
|
"namedAnimations": {
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
||||||
},
|
},
|
||||||
"animations": ["q.bedrock('weezing', 'battle-sleep')"]
|
"animations": ["q.bedrock('weezing', 'battle_sleep')"]
|
||||||
},
|
},
|
||||||
"sleep": {
|
"sleep": {
|
||||||
"poseTypes": ["SLEEP"],
|
"poseTypes": ["SLEEP"],
|
||||||
|
|||||||
-4
@@ -39,10 +39,6 @@
|
|||||||
"q.bedrock_quirk('weezing_galar', 'blink')",
|
"q.bedrock_quirk('weezing_galar', 'blink')",
|
||||||
"q.bedrock_quirk('weezing_galar', 'blink2')"
|
"q.bedrock_quirk('weezing_galar', 'blink2')"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"sleeping": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"animations": ["q.bedrock('weezing_galar', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-4
@@ -33,10 +33,7 @@
|
|||||||
"quirks": [
|
"quirks": [
|
||||||
"q.bedrock_quirk('rhydon', 'blink')",
|
"q.bedrock_quirk('rhydon', 'blink')",
|
||||||
"q.bedrock_quirk('rhydon', 'battle_quirk')"
|
"q.bedrock_quirk('rhydon', 'battle_quirk')"
|
||||||
],
|
]
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_primary('rhydon', 'battle_cry', q.curve('symmetrical_wide'))"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"jump": {
|
"jump": {
|
||||||
"poseTypes": ["STAND", "WALK"],
|
"poseTypes": ["STAND", "WALK"],
|
||||||
|
|||||||
-7
@@ -94,13 +94,6 @@
|
|||||||
"q.bedrock('mr_mime', 'ground_run')"
|
"q.bedrock('mr_mime', 'ground_run')"
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('mr_mime', 'blink')"]
|
"quirks": ["q.bedrock_quirk('mr_mime', 'blink')"]
|
||||||
},
|
|
||||||
"sleep": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
|
||||||
},
|
|
||||||
"animations": ["q.bedrock('mr_mime', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-7
@@ -75,13 +75,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
|
"quirks": ["q.bedrock_quirk('tauros', 'blink')"]
|
||||||
},
|
|
||||||
"sleep": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
|
||||||
},
|
|
||||||
"animations": ["q.bedrock('tauros', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-7
@@ -120,13 +120,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
|
"quirks": ["q.bedrock_quirk('tauros_paldean_aqua', 'blink')"]
|
||||||
},
|
|
||||||
"sleep": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
|
||||||
},
|
|
||||||
"animations": ["q.bedrock('tauros_paldean_aqua', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-7
@@ -74,13 +74,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
|
"quirks": ["q.bedrock_quirk('tauros_paldean_blaze', 'blink')"]
|
||||||
},
|
|
||||||
"sleep": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('dummy', 'cry')"
|
|
||||||
},
|
|
||||||
"animations": ["q.bedrock('tauros_paldean_blaze', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-1
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, -0.02, 0],
|
"profileTranslation": [0, -0.02, 0],
|
||||||
"rootBone": "omanyte",
|
"rootBone": "omanyte",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('omanyte', 'faint', q.curve('one'))",
|
|
||||||
"cry": "q.bedrock_stateful('omanyte', 'cry')"
|
"cry": "q.bedrock_stateful('omanyte', 'cry')"
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
|
|||||||
-1
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, 0.066, 0],
|
"profileTranslation": [0, 0.066, 0],
|
||||||
"rootBone": "omastar",
|
"rootBone": "omastar",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('omastar', 'faint', q.curve('one'))",
|
|
||||||
"cry": "q.bedrock_stateful('omastar', 'cry')"
|
"cry": "q.bedrock_stateful('omastar', 'cry')"
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
|
|||||||
+1
-1
@@ -169,7 +169,7 @@
|
|||||||
"q.look('neck', 1, 1, 25, -20, 20, -20)",
|
"q.look('neck', 1, 1, 25, -20, 20, -20)",
|
||||||
"q.look('head', 1, 1, 22.5, -10, 15, -15)",
|
"q.look('head', 1, 1, 22.5, -10, 15, -15)",
|
||||||
"q.bedrock('aerodactyl', 'air_glide')",
|
"q.bedrock('aerodactyl', 'air_glide')",
|
||||||
"q.bedrock('aerodactyl', 'air_dive')",
|
"q.bedrock('aerodactyl', 'ride_dive')",
|
||||||
{
|
{
|
||||||
"condition": "q.is_ridden",
|
"condition": "q.is_ridden",
|
||||||
"animation": "q.bedrock('aerodactyl', 'ride_air_glide')"
|
"animation": "q.bedrock('aerodactyl', 'ride_air_glide')"
|
||||||
|
|||||||
+1
-2
@@ -5,8 +5,7 @@
|
|||||||
"profileTranslation": [0, 0.84, -10],
|
"profileTranslation": [0, 0.84, -10],
|
||||||
"rootBone": "feraligatr",
|
"rootBone": "feraligatr",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('feraligatr', 'cry')",
|
"cry": "q.bedrock_stateful('feraligatr', 'cry')"
|
||||||
"recoil": "q.bedrock_stateful('feraligatr', 'recoil')"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"standing": {
|
"standing": {
|
||||||
|
|||||||
-3
@@ -16,9 +16,6 @@
|
|||||||
"q.look('head_ai')",
|
"q.look('head_ai')",
|
||||||
"q.bedrock('bellossom', 'battle_idle')"
|
"q.bedrock('bellossom', 'battle_idle')"
|
||||||
],
|
],
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_stateful('bellossom', 'battle_cry')"
|
|
||||||
},
|
|
||||||
"quirks": [
|
"quirks": [
|
||||||
"q.bedrock_quirk('bellossom', 'blink')"
|
"q.bedrock_quirk('bellossom', 'blink')"
|
||||||
]
|
]
|
||||||
|
|||||||
+3
@@ -4,6 +4,9 @@
|
|||||||
"profileScale": 0.98,
|
"profileScale": 0.98,
|
||||||
"profileTranslation": [0.00, 0.24, 0],
|
"profileTranslation": [0.00, 0.24, 0],
|
||||||
"rootBone": "wurmple",
|
"rootBone": "wurmple",
|
||||||
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('wurmple', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
|
|||||||
+3
@@ -4,6 +4,9 @@
|
|||||||
"profileScale": 0.80,
|
"profileScale": 0.80,
|
||||||
"profileTranslation": [0.00, 0.48, 0],
|
"profileTranslation": [0.00, 0.48, 0],
|
||||||
"rootBone": "silcoon",
|
"rootBone": "silcoon",
|
||||||
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('silcoon', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
|
|||||||
+3
@@ -4,6 +4,9 @@
|
|||||||
"profileScale": 0.60,
|
"profileScale": 0.60,
|
||||||
"profileTranslation": [0, 0.90, 0],
|
"profileTranslation": [0, 0.90, 0],
|
||||||
"rootBone": "beautifly",
|
"rootBone": "beautifly",
|
||||||
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('beautifly', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
|
|||||||
+3
@@ -4,6 +4,9 @@
|
|||||||
"profileScale": 0.74,
|
"profileScale": 0.74,
|
||||||
"profileTranslation": [0.00, 0.57, 0],
|
"profileTranslation": [0.00, 0.57, 0],
|
||||||
"rootBone": "cascoon",
|
"rootBone": "cascoon",
|
||||||
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('cascoon', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
|
|||||||
+3
@@ -4,6 +4,9 @@
|
|||||||
"profileScale": 0.63,
|
"profileScale": 0.63,
|
||||||
"profileTranslation": [0, 0.64, 0],
|
"profileTranslation": [0, 0.64, 0],
|
||||||
"rootBone": "dustox",
|
"rootBone": "dustox",
|
||||||
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('dustox', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
|
|||||||
+2
-3
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, -1.3, 0],
|
"profileTranslation": [0, -1.3, 0],
|
||||||
"rootBone": "luvdisc",
|
"rootBone": "luvdisc",
|
||||||
"animations": {
|
"animations": {
|
||||||
"cry": "q.bedrock_stateful('luvdisc', 'cry')",
|
|
||||||
"faint": "q.bedrock_primary('luvdisc', 'ground_faint', q.curve('one'))"
|
"faint": "q.bedrock_primary('luvdisc', 'ground_faint', q.curve('one'))"
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
@@ -44,12 +43,12 @@
|
|||||||
"ground-sleep": {
|
"ground-sleep": {
|
||||||
"poseTypes": ["SLEEP"],
|
"poseTypes": ["SLEEP"],
|
||||||
"isTouchingWater": false,
|
"isTouchingWater": false,
|
||||||
"animations": ["q.bedrock('luvdisc', 'ground-sleep')"]
|
"animations": ["q.bedrock('luvdisc', 'ground_sleep')"]
|
||||||
},
|
},
|
||||||
"water-sleep": {
|
"water-sleep": {
|
||||||
"poseTypes": ["SLEEP"],
|
"poseTypes": ["SLEEP"],
|
||||||
"isTouchingWater": true,
|
"isTouchingWater": true,
|
||||||
"animations": ["q.bedrock('luvdisc', 'water-sleep')"]
|
"animations": ["q.bedrock('luvdisc', 'water_sleep')"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-4
@@ -17,10 +17,6 @@
|
|||||||
"poseTypes": ["WALK"],
|
"poseTypes": ["WALK"],
|
||||||
"animations": ["q.look('head_ai')", "q.bedrock('servine', 'ground_idle')"],
|
"animations": ["q.look('head_ai')", "q.bedrock('servine', 'ground_idle')"],
|
||||||
"quirks": ["q.bedrock_quirk('servine', 'blink')"]
|
"quirks": ["q.bedrock_quirk('servine', 'blink')"]
|
||||||
},
|
|
||||||
"sleep": {
|
|
||||||
"poseTypes": ["SLEEP"],
|
|
||||||
"animations": ["q.bedrock('servine', 'sleep')"]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, 0.82, 0],
|
"profileTranslation": [0, 0.82, 0],
|
||||||
"rootBone": "pignite",
|
"rootBone": "pignite",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('pignite', 'faint', q.curve('one'))",
|
|
||||||
"cry": "q.bedrock_stateful('pignite', 'cry')",
|
"cry": "q.bedrock_stateful('pignite', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('pignite', 'recoil')"
|
"recoil": "q.bedrock_stateful('pignite', 'recoil')"
|
||||||
},
|
},
|
||||||
|
|||||||
-1
@@ -5,7 +5,6 @@
|
|||||||
"profileTranslation": [0, 0.96, 0],
|
"profileTranslation": [0, 0.96, 0],
|
||||||
"rootBone": "emboar",
|
"rootBone": "emboar",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('emboar', 'faint', q.curve('one'))",
|
|
||||||
"cry": "q.bedrock_stateful('emboar', 'cry')",
|
"cry": "q.bedrock_stateful('emboar', 'cry')",
|
||||||
"recoil": "q.bedrock_stateful('pignite', 'recoil')"
|
"recoil": "q.bedrock_stateful('pignite', 'recoil')"
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-5
@@ -39,10 +39,7 @@
|
|||||||
],
|
],
|
||||||
"quirks": [
|
"quirks": [
|
||||||
"q.bedrock_quirk('archeops', 'blink')"
|
"q.bedrock_quirk('archeops', 'blink')"
|
||||||
],
|
]
|
||||||
"namedAnimations": {
|
|
||||||
"cry": "q.bedrock_primary('archeops', 'battle_cry', q.curve('symmetrical_wide'))"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"battle-flying": {
|
"battle-flying": {
|
||||||
"poseTypes": ["HOVER"],
|
"poseTypes": ["HOVER"],
|
||||||
@@ -214,7 +211,6 @@
|
|||||||
"q.bedrock('archeops', 'sleep')"
|
"q.bedrock('archeops', 'sleep')"
|
||||||
],
|
],
|
||||||
"quirks": [
|
"quirks": [
|
||||||
"q.bedrock_quirk('archeops', 'sleep_quirk')"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,13 +11,13 @@
|
|||||||
"standing": {
|
"standing": {
|
||||||
"poseName": "standing",
|
"poseName": "standing",
|
||||||
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE", "FLOAT"],
|
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE", "FLOAT"],
|
||||||
"animations": ["q.look('head')", "q.bedrock('fennekin', 'ground_idle')"],
|
"animations": ["q.look('head_ai')", "q.bedrock('fennekin', 'ground_idle')"],
|
||||||
"quirks": ["q.bedrock_quirk('fennekin', 'blink')"]
|
"quirks": ["q.bedrock_quirk('fennekin', 'blink')"]
|
||||||
},
|
},
|
||||||
"walking": {
|
"walking": {
|
||||||
"poseName": "walking",
|
"poseName": "walking",
|
||||||
"poseTypes": ["WALK", "SWIM"],
|
"poseTypes": ["WALK", "SWIM"],
|
||||||
"animations": ["q.look('head')", "q.bedrock('fennekin', 'ground_walk')"],
|
"animations": ["q.look('head_ai')", "q.bedrock('fennekin', 'ground_walk')"],
|
||||||
"quirks": ["q.bedrock_quirk('fennekin', 'blink')"]
|
"quirks": ["q.bedrock_quirk('fennekin', 'blink')"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -12,21 +12,21 @@
|
|||||||
"poseName": "battle-standing",
|
"poseName": "battle-standing",
|
||||||
"poseTypes": ["STAND"],
|
"poseTypes": ["STAND"],
|
||||||
"isBattle": true,
|
"isBattle": true,
|
||||||
"animations": ["q.look('head')", "q.bedrock('braixen', 'battle_idle')"],
|
"animations": ["q.look('head_ai')", "q.bedrock('braixen', 'battle_idle')"],
|
||||||
"quirks": ["q.bedrock_quirk('braixen', 'blink')"]
|
"quirks": ["q.bedrock_quirk('braixen', 'blink')"]
|
||||||
},
|
},
|
||||||
"standing": {
|
"standing": {
|
||||||
"poseName": "standing",
|
"poseName": "standing",
|
||||||
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE", "FLOAT"],
|
"poseTypes": ["STAND", "NONE", "PORTRAIT", "PROFILE", "FLOAT"],
|
||||||
"isBattle": false,
|
"isBattle": false,
|
||||||
"animations": ["q.look('head')", "q.bedrock('braixen', 'ground_idle')"],
|
"animations": ["q.look('head_ai')", "q.bedrock('braixen', 'ground_idle')"],
|
||||||
"quirks": ["q.bedrock_quirk('braixen', 'blink')"]
|
"quirks": ["q.bedrock_quirk('braixen', 'blink')"]
|
||||||
},
|
},
|
||||||
"walking": {
|
"walking": {
|
||||||
"poseName": "walking",
|
"poseName": "walking",
|
||||||
"poseTypes": ["WALK", "SWIM"],
|
"poseTypes": ["WALK", "SWIM"],
|
||||||
"animations": [
|
"animations": [
|
||||||
"q.look('head')",
|
"q.look('head_ai')",
|
||||||
"q.bedrock('braixen', 'ground_walk')"
|
"q.bedrock('braixen', 'ground_walk')"
|
||||||
],
|
],
|
||||||
"quirks": ["q.bedrock_quirk('braixen', 'blink')"],
|
"quirks": ["q.bedrock_quirk('braixen', 'blink')"],
|
||||||
|
|||||||
+3
-1
@@ -4,7 +4,9 @@
|
|||||||
"profileScale": 0.5,
|
"profileScale": 0.5,
|
||||||
"profileTranslation": [-0.05,1,0],
|
"profileTranslation": [-0.05,1,0],
|
||||||
"rootBone": "helioptile",
|
"rootBone": "helioptile",
|
||||||
"animations": { },
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('helioptile', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"standing": {
|
"standing": {
|
||||||
"poseTypes": [
|
"poseTypes": [
|
||||||
|
|||||||
+3
-1
@@ -4,7 +4,9 @@
|
|||||||
"profileScale": 0.5,
|
"profileScale": 0.5,
|
||||||
"profileTranslation": [0,1,0],
|
"profileTranslation": [0,1,0],
|
||||||
"rootBone": "heliolisk",
|
"rootBone": "heliolisk",
|
||||||
"animations": {},
|
"animations": {
|
||||||
|
"cry": "q.bedrock_stateful('heliolisk', 'cry')"
|
||||||
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"standing": {
|
"standing": {
|
||||||
"poseTypes": [
|
"poseTypes": [
|
||||||
|
|||||||
+1
-3
@@ -5,9 +5,7 @@
|
|||||||
"profileTranslation": [0.0, 0.25, 0.0],
|
"profileTranslation": [0.0, 0.25, 0.0],
|
||||||
"rootBone": "pumpkaboo",
|
"rootBone": "pumpkaboo",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('pumpkaboo', 'faint', q.curve('one'))",
|
"cry": "q.bedrock_stateful('pumpkaboo', 'cry')"
|
||||||
"cry": "q.bedrock_stateful('pumpkaboo', 'cry')",
|
|
||||||
"recoil": "q.bedrock_stateful('pumpkaboo', 'recoil')"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
+1
-3
@@ -5,9 +5,7 @@
|
|||||||
"profileTranslation": [0.0, 0.15, 0.0],
|
"profileTranslation": [0.0, 0.15, 0.0],
|
||||||
"rootBone": "pumpkaboo",
|
"rootBone": "pumpkaboo",
|
||||||
"animations": {
|
"animations": {
|
||||||
"faint": "q.bedrock_primary('pumpkaboo', 'faint', q.curve('one'))",
|
"cry": "q.bedrock_stateful('pumpkaboo', 'cry')"
|
||||||
"cry": "q.bedrock_stateful('pumpkaboo', 'cry')",
|
|
||||||
"recoil": "q.bedrock_stateful('pumpkaboo', 'recoil')"
|
|
||||||
},
|
},
|
||||||
"poses": {
|
"poses": {
|
||||||
"battle-standing": {
|
"battle-standing": {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user