From 85b9ddb706903de6089182300694c8d60332a1cf Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 27 Jan 2020 18:37:22 +0200 Subject: [PATCH] Core/Redux split to get out the non-essential features --- .../unicopia/InteractionManager.java | 51 ------- .../minelittlepony/unicopia/UContainers.java | 15 -- .../com/minelittlepony/unicopia/Unicopia.java | 74 ---------- .../minelittlepony/unicopia/ability/Hit.java | 5 - .../unicopia/ability/IData.java | 5 - .../unicopia/client/ClientHooks.java | 93 ------------ .../unicopia/client/input/Keyboard.java | 20 --- .../client/particle/ParticleDisk.java | 41 ------ .../client/particle/ParticleRaindrops.java | 25 ---- .../unicopia/{ => core}/Config.java | 27 ++-- .../unicopia/{ => core}/EquinePredicates.java | 18 +-- .../input => core}/IKeyBindingHandler.java | 4 +- .../InteractionManager.java} | 33 +---- .../unicopia/{ => core}/Race.java | 2 +- .../core/ServerInteractionManager.java | 9 ++ .../unicopia/{ => core}/SpeciesList.java | 10 +- .../unicopia/{ => core}/UEffects.java | 8 +- .../unicopia/{ => core}/UParticles.java | 15 +- .../unicopia/{ => core}/USounds.java | 4 +- .../minelittlepony/unicopia/core/UTags.java | 13 ++ .../unicopia/core/UnicopiaCore.java | 44 ++++++ .../unicopia/core/ability/Hit.java | 5 + .../{ => core}/ability/IAbilityReceiver.java | 4 +- .../{ => core}/ability/IFlyingPredicate.java | 4 +- .../{ => core}/ability/IHeightPredicate.java | 4 +- .../unicopia/{ => core}/ability/IPower.java | 13 +- .../unicopia/{ => core}/ability/Location.java | 4 +- .../unicopia/{ => core}/ability/Numeric.java | 4 +- .../{ => core}/ability/PowerCarry.java | 11 +- .../{ => core}/ability/PowerFeed.java | 13 +- .../{ => core}/ability/PowerGrow.java | 13 +- .../{ => core}/ability/PowerMagic.java | 20 ++- .../{ => core}/ability/PowerTeleport.java | 14 +- .../{ => core}/ability/PowersRegistry.java | 27 ++-- .../client}/InversionAwareKeyboardInput.java | 8 +- .../client}/KeyBindingsHandler.java | 15 +- .../input => core/client}/MouseControl.java | 6 +- .../client/UnicopiaCoreClient.java} | 110 ++++++--------- .../unicopia/core/client/gui/ClientHooks.java | 30 ++++ .../client/gui/FlightExperienceBar.java | 4 +- .../{ => core}/client/gui/IHudElement.java | 4 +- .../{ => core}/client/gui/SettingsScreen.java | 2 +- .../unicopia/{ => core}/client/gui/UHud.java | 32 ++--- .../core/client/particle/DiskParticle.java | 47 +++++++ .../particle/ParticleChangelingMagic.java | 6 +- .../client/particle/ParticleUnicornMagic.java | 2 +- .../client/particle/RaindropsParticle.java | 43 ++++++ .../client/particle/SphereParticle.java} | 68 ++++++--- .../client/render}/DiskModel.java | 2 +- .../client/render}/ModelQuads.java | 2 +- .../client/render}/SphereModel.java | 7 +- .../client/render}/TexturedShape2d.java | 2 +- .../unicopia/{ => core}/command/Commands.java | 3 +- .../{ => core}/command/GravityCommand.java | 6 +- .../{ => core}/command/RaceArgument.java | 4 +- .../{ => core}/command/RacelistCommand.java | 6 +- .../{ => core}/command/SpeciesCommand.java | 6 +- .../{ => core}/ducks/IItemEntity.java | 4 +- .../ducks/IRaceContainerHolder.java | 6 +- .../unicopia/{ => core}/enchanting/IPage.java | 2 +- .../{ => core}/enchanting/IPageOwner.java | 20 +-- .../core/enchanting/IUnlockEvent.java | 5 + .../{ => core}/enchanting/PageState.java | 2 +- .../entity/FlightControl.java} | 5 +- .../unicopia/{ => core}/entity/IEntity.java | 12 +- .../unicopia/{ => core}/entity/IMagicals.java | 2 +- .../entity/InAnimate.java} | 6 +- .../entity}/ItemEntityCapabilities.java | 10 +- .../entity}/LivingEntityCapabilities.java | 26 ++-- .../IOwned.java => core/entity/Owned.java} | 8 +- .../entity/RaceContainer.java} | 4 +- .../ITrap.java => core/entity/Trap.java} | 4 +- .../entity/Updatable.java} | 4 +- .../entity/player}/AbilityDelegate.java | 24 ++-- .../entity/player}/GravityDelegate.java | 50 +++---- .../entity/player}/IPlayer.java | 35 ++--- .../entity/player}/PlayerAttributes.java | 11 +- .../entity/player}/PlayerCamera.java | 20 +-- .../entity/player}/PlayerCapabilities.java | 128 +++++++---------- .../entity/player}/PlayerInventory.java | 47 +++++-- .../core/entity/player/PlayerPageStats.java | 62 ++++++++ .../spells => core/magic}/AbstractSpell.java | 5 +- .../unicopia/{ => core}/magic/Affinity.java | 2 +- .../spells => core/magic}/CastResult.java | 2 +- .../{ => core}/magic/CasterUtils.java | 12 +- .../spells => core/magic}/GenericSpell.java | 6 +- .../unicopia/{ => core}/magic/IAffine.java | 2 +- .../{ => core}/magic/IAttachedEffect.java | 2 +- .../unicopia/{ => core}/magic/ICaster.java | 9 +- .../unicopia/core/magic/IDependable.java | 7 + .../{ => core}/magic/IDispenceable.java | 8 +- .../items => core/magic}/IDispensable.java | 2 +- .../{ => core}/magic/IHeldEffect.java | 4 +- .../unicopia/{ => core}/magic/ILevelled.java | 2 +- .../{ => core}/magic/IMagicEffect.java | 12 +- .../items => core/magic}/IMagicalItem.java | 5 +- .../unicopia/core/magic/IMagicals.java | 5 + .../{ => core}/magic/IParticleSource.java | 4 +- .../{ => core}/magic/ISuppressable.java | 2 +- .../unicopia/{ => core}/magic/IUseable.java | 4 +- .../magic/spell}/AttractiveSpell.java | 16 +-- .../magic/spell/FireSpell.java} | 132 +++++++++--------- .../magic/spell/NecromancySpell.java} | 25 ++-- .../magic/spell/ShieldSpell.java} | 32 +++-- .../magic/spell}/SiphoningSpell.java | 17 +-- .../magic/spell}/SpellRegistry.java | 32 ++--- .../core/magic/spell/package-info.java | 1 + .../unicopia/{ => core}/mixin/IWalker.java | 2 +- .../{ => core}/mixin/MixinEntity.java | 2 +- .../{ => core}/mixin/MixinItemEntity.java | 6 +- .../{ => core}/mixin/MixinLivingEntity.java | 14 +- .../{ => core}/mixin/MixinPlayerEntity.java | 12 +- .../mixin/MixinProjectileEntity.java | 4 +- .../core/mixin/client/MixinCamera.java | 35 +++++ .../core/mixin/client/MixinGameRenderer.java | 26 ++++ .../{ => core}/network/EffectSync.java | 8 +- .../{ => core}/network/ITransmittable.java | 2 +- .../{ => core}/network/MsgPlayerAbility.java | 15 +- .../network/MsgPlayerCapabilities.java | 12 +- .../network/MsgRequestCapabilities.java | 12 +- .../unicopia/core/package-info.java | 1 + .../{ => unicopia/core}/util/AssetWalker.java | 2 +- .../{ => core/util}/CustomStatusEffect.java | 2 +- .../core/util/HeavyInventoryUtils.java | 86 ++++++++++++ .../core}/util/InbtSerialisable.java | 2 +- .../{ => unicopia/core}/util/Iterators.java | 2 +- .../core}/util/MagicalDamageSource.java | 2 +- .../util/MineLPConnector.java} | 6 +- .../unicopia/core/util/MutableVector.java | 20 +++ .../{ => unicopia/core}/util/PosHelper.java | 4 +- .../{ => unicopia/core}/util/VecHelper.java | 2 +- .../{ => unicopia/core}/util/WorldEvent.java | 2 +- .../{ => unicopia/core}/util/WorldHelper.java | 2 +- .../core}/util/collection/IStateMapping.java | 2 +- .../core}/util/collection/ListHelper.java | 2 +- .../core}/util/collection/Pool.java | 2 +- .../collection/ReversableStateMapList.java | 2 +- .../core}/util/collection/StateMapList.java | 2 +- .../core}/util/collection/Weighted.java | 2 +- .../util/dummy/DummyClientPlayerEntity.java | 8 +- .../core}/util/dummy/DummyPlayerEntity.java | 8 +- .../util/dummy/DummyServerPlayerEntity.java | 8 +- .../util}/particles/ParticleConnection.java | 4 +- .../util}/particles/ParticleEmitter.java | 2 +- .../util}/particles/ParticleUtils.java | 6 +- .../{ => core/util}/projectile/ITossable.java | 4 +- .../util}/projectile/ProjectileUtil.java | 2 +- .../core}/util/shape/IShape.java | 4 +- .../{ => unicopia/core}/util/shape/Line.java | 2 +- .../core}/util/shape/Sphere.java | 2 +- .../unicopia/enchanting/IUnlockEvent.java | 5 - .../minelittlepony/unicopia/entity/IFood.java | 22 --- .../unicopia/entity/IGravity.java | 15 -- .../unicopia/entity/IInventory.java | 32 ----- .../unicopia/entity/capabilities/ICamera.java | 15 -- .../unicopia/magic/IMagicals.java | 5 - .../unicopia/magic/items/IDependable.java | 7 - .../{world => redux}/BlockInteractions.java | 34 +---- .../unicopia/{ => redux}/CloudType.java | 5 +- .../unicopia/{world => redux}/Hooks.java | 1 + .../{forgebullshit => redux}/OreReplacer.java | 8 +- .../unicopia/redux/UContainers.java | 16 +++ .../unicopia/{ => redux}/UEntities.java | 26 ++-- .../unicopia/{ => redux}/UMaterials.java | 2 +- .../unicopia/{world => redux}/UWorld.java | 12 +- .../unicopia/redux/UnicopiaRedux.java | 63 +++++++++ .../{ => redux}/ability/PowerCloudBase.java | 12 +- .../{ => redux}/ability/PowerDisguise.java | 31 ++-- .../{ => redux}/ability/PowerEngulf.java | 11 +- .../{ => redux}/ability/PowerStomp.java | 29 ++-- .../advancements/AbstractCriterion.java | 2 +- .../advancements/AdvancementPredicate.java | 2 +- .../advancements/BOHDeathCriterion.java | 2 +- .../{ => redux}/block/AbstractDoorBlock.java | 4 +- .../{ => redux}/block/BlockAlfalfa.java | 51 ++----- .../{ => redux}/block/BlockCloudDoor.java | 6 +- .../{ => redux}/block/BlockCloudFarm.java | 9 +- .../{ => redux}/block/BlockCloudStairs.java | 16 +-- .../block/BlockGrowingCuccoon.java | 15 +- .../{ => redux}/block/BlockTomatoPlant.java | 8 +- .../block/ChiselledChitinBlock.java | 10 +- .../{ => redux}/block/ChitinBlock.java | 10 +- .../{ => redux}/block/CloudAnvilBlock.java | 6 +- .../{ => redux}/block/CloudBanisterBlock.java | 4 +- .../{ => redux}/block/CloudBlock.java | 9 +- .../{ => redux}/block/CloudFenceBlock.java | 4 +- .../{ => redux}/block/CloudSlabBlock.java | 4 +- .../{ => redux}/block/DiamondDoorBlock.java | 4 +- .../{ => redux}/block/DutchDoorBlock.java | 2 +- .../{ => redux}/block/FruitLeavesBlock.java | 4 +- .../{ => redux}/block/GlowingGemBlock.java | 5 +- .../{ => redux}/block/HiveWallBlock.java | 19 ++- .../{ => redux}/block/ICloudBlock.java | 10 +- .../{ => redux}/block/IColourful.java | 2 +- .../unicopia/{ => redux}/block/ITillable.java | 2 +- .../{ => redux}/block/SlimeLayerBlock.java | 2 +- .../{ => redux}/block/StickBlock.java | 2 +- .../{ => redux}/block/SugarBlock.java | 2 +- .../unicopia/{ => redux/block}/UBlocks.java | 71 ++-------- .../unicopia/{ => redux}/block/UFarmland.java | 4 +- .../unicopia/{ => redux}/block/UPot.java | 2 +- .../unicopia/{ => redux}/block/USlab.java | 2 +- .../unicopia/{ => redux}/block/UStairs.java | 2 +- .../{ => redux}/client/URenderers.java | 54 +++---- .../redux/client/UnicopiaReduxClient.java | 53 +++++++ .../render}/ButterflyEntityRenderer.java | 6 +- .../client}/render/DisguiseRenderer.java | 8 +- .../client/render}/RenderCloud.java | 8 +- .../client/render}/RenderCuccoon.java | 12 +- .../client/render}/RenderRainbow.java | 6 +- .../client/render}/RenderSpear.java | 8 +- .../client/render}/RenderSpellbook.java | 6 +- .../render}/SpellcastEntityRenderer.java | 6 +- .../render}/model/ButterflyEntityModel.java | 4 +- .../client/render}/model/ModelCloud.java | 2 +- .../client/render}/model/ModelCuccoon.java | 4 +- .../client/render}/model/ModelGem.java | 6 +- .../client/render}/model/ModelSpellbook.java | 2 +- .../{ => redux}/command/DisguiseCommand.java | 18 +-- .../container/BagOfHoldingContainer.java} | 10 +- .../container/BagOfHoldingInventory.java} | 105 ++------------ .../container/BagOfHoldingScreen.java} | 8 +- .../container}/SpellBookContainer.java | 12 +- .../container}/SpellBookInventory.java | 2 +- .../container/SpellBookScreen.java} | 28 ++-- .../container}/SpellbookResultSlot.java | 12 +- .../enchanting/CompoundCondition.java | 4 +- .../enchanting/IConditionFactory.java | 2 +- .../enchanting/IPageUnlockListener.java | 4 +- .../enchanting/IUnlockCondition.java | 4 +- .../{ => redux}/enchanting/PageInstance.java | 6 +- .../enchanting/PageStateCondition.java | 6 +- .../{ => redux}/enchanting/Pages.java | 8 +- .../enchanting/SpellCraftingEvent.java | 10 +- .../recipe/AbstractSpecialRecipe.java | 6 +- .../enchanting/recipe/AffineIngredient.java | 2 +- .../enchanting/recipe/AffineIngredients.java | 8 +- .../recipe/CompoundSpellIngredient.java | 2 +- .../recipe/SingleSpellIngredient.java | 4 +- .../enchanting/recipe/SpecialRecipe.java | 2 +- .../enchanting/recipe/SpellIngredient.java | 2 +- .../enchanting/recipe/SpellRecipe.java | 8 +- .../{ => redux}/entity/ButterflyEntity.java | 6 +- .../{ => redux}/entity/CloudEntity.java | 21 +-- .../entity/ConstructionCloudEntity.java | 4 +- .../{ => redux}/entity/CuccoonEntity.java | 18 +-- .../{ => redux}/entity/ProjectileEntity.java | 21 +-- .../{ => redux}/entity/RacingCloudEntity.java | 4 +- .../{ => redux}/entity/RainbowEntity.java | 9 +- .../{ => redux}/entity/SpearEntity.java | 8 +- .../{ => redux}/entity/SpellbookEntity.java | 7 +- .../{ => redux}/entity/SpellcastEntity.java | 24 ++-- .../{ => redux}/entity/WildCloudEntity.java | 4 +- .../entity/ai}/FollowCasterGoal.java | 4 +- .../{ => redux}/item/AlicornAmuletItem.java | 25 ++-- .../unicopia/{ => redux}/item/AppleItem.java | 11 +- .../{ => redux}/item/BagOfHoldingItem.java | 20 +-- .../{ => redux}/item/CloudPlacerItem.java | 6 +- .../{ => redux}/item/CursedMagicGemItem.java | 12 +- .../{ => redux}/item/EnchantedStaffItem.java | 20 +-- .../{ => redux}/item/ExtendedShearsItem.java | 5 +- .../{ => redux}/item/MagicGemItem.java | 22 +-- .../unicopia/{ => redux}/item/MossItem.java | 11 +- .../{ => redux}/item/PredicatedBlockItem.java | 2 +- .../{ => redux}/item/RottenAppleItem.java | 4 +- .../{ => redux}/item/RottenTomatoItem.java | 8 +- .../unicopia/{ => redux}/item/SpearItem.java | 10 +- .../{ => redux}/item/SpellbookItem.java | 10 +- .../unicopia/{ => redux}/item/StaffItem.java | 5 +- .../unicopia/{ => redux}/item/StickItem.java | 4 +- .../unicopia/{ => redux}/item/SugaryItem.java | 4 +- .../unicopia/{ => redux}/item/TomatoItem.java | 2 +- .../{ => redux}/item/TomatoSeedsItem.java | 6 +- .../unicopia/{ => redux}/item/UItems.java | 44 ++---- .../unicopia/{ => redux}/item/URecord.java | 2 +- .../{ => redux}/item/ZapAppleItem.java | 10 +- .../items => redux/magic}/ICastable.java | 14 +- .../{ => redux}/magic/ITossedEffect.java | 15 +- .../magic/spells/AbstractAttachableSpell.java | 9 +- .../magic/spells/AwkwardSpell.java | 16 ++- .../magic/spells/ChangelingTrapSpell.java | 25 ++-- .../magic/spells/ChargingSpell.java | 12 +- .../magic/spells/DarknessSpell.java | 23 +-- .../magic/spells/DisguiseSpell.java} | 58 ++++---- .../magic/spells/FaithfulAssistantSpell.java} | 18 +-- .../magic/spells/FlameSpell.java} | 24 ++-- .../magic/spells/GlowingSpell.java} | 15 +- .../magic/spells/IceSpell.java} | 99 ++++++------- .../magic/spells/InfernoSpell.java} | 54 +++---- .../{ => redux}/magic/spells/PortalSpell.java | 26 ++-- .../magic/spells/RevealingSpell.java} | 17 +-- .../magic/spells/ScorchSpell.java} | 21 +-- .../structure/AbstractFeature.java | 2 +- .../structure}/AbstractFeaturesGen.java | 2 +- .../structure/CloudDungeon.java | 10 +- .../{world => redux/structure}/CloudGen.java | 5 +- .../structure/CustomSaplingGenerator.java | 2 +- .../structure/GroundDungeon.java | 14 +- .../structure}/StructuresGen.java | 5 +- .../structure/TemplateBasedFeature.java | 2 +- .../toxin}/DynamicToxicBlockItem.java | 2 +- .../toxin}/DynamicToxicItem.java | 2 +- .../consumables => redux/toxin}/Toxic.java | 2 +- .../toxin}/ToxicBlockItem.java | 8 +- .../toxin}/ToxicItem.java | 8 +- .../consumables => redux/toxin}/Toxicity.java | 2 +- .../consumables => redux/toxin}/Toxin.java | 2 +- .../util}/projectile/IAdvancedProjectile.java | 4 +- .../util}/projectile/ITossableItem.java | 7 +- .../util/BasicEasingInterpolator.java | 52 +++++++ .../minelittlepony/util/IInterpolator.java | 16 +++ .../com/minelittlepony/util/MathUtil.java | 44 ++++++ .../minelittlepony/util/MotionCompositor.java | 56 ++++++++ 313 files changed, 2251 insertions(+), 2180 deletions(-) delete mode 100644 src/main/java/com/minelittlepony/unicopia/InteractionManager.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/UContainers.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/Unicopia.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/ability/Hit.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/ability/IData.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/ClientHooks.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/input/Keyboard.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/particle/ParticleDisk.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/client/particle/ParticleRaindrops.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/Config.java (82%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/EquinePredicates.java (71%) rename src/main/java/com/minelittlepony/unicopia/{client/input => core}/IKeyBindingHandler.java (82%) rename src/main/java/com/minelittlepony/unicopia/{ServerInteractionManager.java => core/InteractionManager.java} (57%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/Race.java (98%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/ServerInteractionManager.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/SpeciesList.java (87%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/UEffects.java (77%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/UParticles.java (64%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/USounds.java (90%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/UTags.java create mode 100644 src/main/java/com/minelittlepony/unicopia/core/UnicopiaCore.java create mode 100644 src/main/java/com/minelittlepony/unicopia/core/ability/Hit.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/IAbilityReceiver.java (57%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/IFlyingPredicate.java (63%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/IHeightPredicate.java (69%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/IPower.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/Location.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/Numeric.java (58%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowerCarry.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowerFeed.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowerGrow.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowerMagic.java (68%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowerTeleport.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ability/PowersRegistry.java (56%) rename src/main/java/com/minelittlepony/unicopia/{client/input => core/client}/InversionAwareKeyboardInput.java (86%) rename src/main/java/com/minelittlepony/unicopia/{client/input => core/client}/KeyBindingsHandler.java (81%) rename src/main/java/com/minelittlepony/unicopia/{client/input => core/client}/MouseControl.java (64%) rename src/main/java/com/minelittlepony/unicopia/{client/ClientInteractionManager.java => core/client/UnicopiaCoreClient.java} (55%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/client/gui/ClientHooks.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/gui/FlightExperienceBar.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/gui/IHudElement.java (56%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/gui/SettingsScreen.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/gui/UHud.java (62%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/client/particle/DiskParticle.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/particle/ParticleChangelingMagic.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/client/particle/ParticleUnicornMagic.java (98%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/client/particle/RaindropsParticle.java rename src/main/java/com/minelittlepony/unicopia/{client/particle/ParticleSphere.java => core/client/particle/SphereParticle.java} (58%) rename src/main/java/com/minelittlepony/unicopia/{client/render/model => core/client/render}/DiskModel.java (81%) rename src/main/java/com/minelittlepony/unicopia/{client/render/model => core/client/render}/ModelQuads.java (93%) rename src/main/java/com/minelittlepony/unicopia/{client/render/model => core/client/render}/SphereModel.java (91%) rename src/main/java/com/minelittlepony/unicopia/{client/render/model => core/client/render}/TexturedShape2d.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/command/Commands.java (77%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/command/GravityCommand.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/command/RaceArgument.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/command/RacelistCommand.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/command/SpeciesCommand.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ducks/IItemEntity.java (52%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/ducks/IRaceContainerHolder.java (74%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/enchanting/IPage.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/enchanting/IPageOwner.java (58%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/enchanting/IUnlockEvent.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/enchanting/PageState.java (88%) rename src/main/java/com/minelittlepony/unicopia/{entity/IFlight.java => core/entity/FlightControl.java} (73%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/entity/IEntity.java (77%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/entity/IMagicals.java (75%) rename src/main/java/com/minelittlepony/unicopia/{entity/IInAnimate.java => core/entity/InAnimate.java} (66%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity}/ItemEntityCapabilities.java (80%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity}/LivingEntityCapabilities.java (79%) rename src/main/java/com/minelittlepony/unicopia/{entity/IOwned.java => core/entity/Owned.java} (68%) rename src/main/java/com/minelittlepony/unicopia/{entity/IRaceContainer.java => core/entity/RaceContainer.java} (53%) rename src/main/java/com/minelittlepony/unicopia/{entity/ITrap.java => core/entity/Trap.java} (54%) rename src/main/java/com/minelittlepony/unicopia/{entity/IUpdatable.java => core/entity/Updatable.java} (68%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/AbilityDelegate.java (82%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/GravityDelegate.java (88%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/IPlayer.java (74%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/PlayerAttributes.java (87%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/PlayerCamera.java (77%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/PlayerCapabilities.java (74%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => core/entity/player}/PlayerInventory.java (75%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerPageStats.java rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic}/AbstractSpell.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/Affinity.java (96%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic}/CastResult.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/CasterUtils.java (90%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic}/GenericSpell.java (82%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IAffine.java (80%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IAttachedEffect.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/ICaster.java (92%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/magic/IDependable.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IDispenceable.java (71%) rename src/main/java/com/minelittlepony/unicopia/{magic/items => core/magic}/IDispensable.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IHeldEffect.java (76%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/ILevelled.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IMagicEffect.java (85%) rename src/main/java/com/minelittlepony/unicopia/{magic/items => core/magic}/IMagicalItem.java (80%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/magic/IMagicals.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IParticleSource.java (90%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/ISuppressable.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/magic/IUseable.java (93%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic/spell}/AttractiveSpell.java (81%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellFire.java => core/magic/spell/FireSpell.java} (59%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellNecromancy.java => core/magic/spell/NecromancySpell.java} (78%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellShield.java => core/magic/spell/ShieldSpell.java} (81%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic/spell}/SiphoningSpell.java (88%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells => core/magic/spell}/SpellRegistry.java (85%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/magic/spell/package-info.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/IWalker.java (84%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/MixinEntity.java (84%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/MixinItemEntity.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/MixinLivingEntity.java (82%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/MixinPlayerEntity.java (86%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/mixin/MixinProjectileEntity.java (91%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinCamera.java create mode 100644 src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinGameRenderer.java rename src/main/java/com/minelittlepony/unicopia/{ => core}/network/EffectSync.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/network/ITransmittable.java (60%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/network/MsgPlayerAbility.java (77%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/network/MsgPlayerCapabilities.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => core}/network/MsgRequestCapabilities.java (72%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/package-info.java rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/AssetWalker.java (98%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/CustomStatusEffect.java (98%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/util/HeavyInventoryUtils.java rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/InbtSerialisable.java (95%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/Iterators.java (97%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/MagicalDamageSource.java (98%) rename src/main/java/com/minelittlepony/unicopia/{MineLP.java => core/util/MineLPConnector.java} (91%) create mode 100644 src/main/java/com/minelittlepony/unicopia/core/util/MutableVector.java rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/PosHelper.java (96%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/VecHelper.java (99%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/WorldEvent.java (97%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/WorldHelper.java (97%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/IStateMapping.java (98%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/ListHelper.java (82%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/Pool.java (94%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/ReversableStateMapList.java (87%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/StateMapList.java (96%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/collection/Weighted.java (96%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/dummy/DummyClientPlayerEntity.java (90%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/dummy/DummyPlayerEntity.java (80%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/dummy/DummyServerPlayerEntity.java (85%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/particles/ParticleConnection.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/particles/ParticleEmitter.java (98%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/particles/ParticleUtils.java (81%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/projectile/ITossable.java (85%) rename src/main/java/com/minelittlepony/unicopia/{ => core/util}/projectile/ProjectileUtil.java (97%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/shape/IShape.java (94%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/shape/Line.java (98%) rename src/main/java/com/minelittlepony/{ => unicopia/core}/util/shape/Sphere.java (98%) delete mode 100644 src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockEvent.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/entity/IFood.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/entity/IGravity.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/entity/IInventory.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/entity/capabilities/ICamera.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/magic/IMagicals.java delete mode 100644 src/main/java/com/minelittlepony/unicopia/magic/items/IDependable.java rename src/main/java/com/minelittlepony/unicopia/{world => redux}/BlockInteractions.java (69%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/CloudType.java (85%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/Hooks.java (97%) rename src/main/java/com/minelittlepony/unicopia/{forgebullshit => redux}/OreReplacer.java (96%) create mode 100644 src/main/java/com/minelittlepony/unicopia/redux/UContainers.java rename src/main/java/com/minelittlepony/unicopia/{ => redux}/UEntities.java (82%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/UMaterials.java (87%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/UWorld.java (91%) create mode 100644 src/main/java/com/minelittlepony/unicopia/redux/UnicopiaRedux.java rename src/main/java/com/minelittlepony/unicopia/{ => redux}/ability/PowerCloudBase.java (84%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/ability/PowerDisguise.java (71%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/ability/PowerEngulf.java (74%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/ability/PowerStomp.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/advancements/AbstractCriterion.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/advancements/AdvancementPredicate.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/advancements/BOHDeathCriterion.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/AbstractDoorBlock.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockAlfalfa.java (87%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockCloudDoor.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockCloudFarm.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockCloudStairs.java (84%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockGrowingCuccoon.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/BlockTomatoPlant.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/ChiselledChitinBlock.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/ChitinBlock.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/CloudAnvilBlock.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/CloudBanisterBlock.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/CloudBlock.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/CloudFenceBlock.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/CloudSlabBlock.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/DiamondDoorBlock.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/DutchDoorBlock.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/FruitLeavesBlock.java (98%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/GlowingGemBlock.java (98%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/HiveWallBlock.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/ICloudBlock.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/IColourful.java (74%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/ITillable.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/SlimeLayerBlock.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/StickBlock.java (98%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/SugarBlock.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux/block}/UBlocks.java (59%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/UFarmland.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/UPot.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/USlab.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/block/UStairs.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/client/URenderers.java (52%) create mode 100644 src/main/java/com/minelittlepony/unicopia/redux/client/UnicopiaReduxClient.java rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/ButterflyEntityRenderer.java (83%) rename src/main/java/com/minelittlepony/unicopia/{client/ability => redux/client}/render/DisguiseRenderer.java (89%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/RenderCloud.java (90%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/RenderCuccoon.java (80%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/RenderRainbow.java (93%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/RenderSpear.java (67%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/RenderSpellbook.java (93%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/SpellcastEntityRenderer.java (87%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/model/ButterflyEntityModel.java (95%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/model/ModelCloud.java (92%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/model/ModelCuccoon.java (94%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/model/ModelGem.java (96%) rename src/main/java/com/minelittlepony/unicopia/{client/render/entity => redux/client/render}/model/ModelSpellbook.java (85%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/command/DisguiseCommand.java (87%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui/ContainerOfHolding.java => redux/container/BagOfHoldingContainer.java} (89%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui/InventoryOfHolding.java => redux/container/BagOfHoldingInventory.java} (63%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui/GuiOfHolding.java => redux/container/BagOfHoldingScreen.java} (93%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui => redux/container}/SpellBookContainer.java (94%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui => redux/container}/SpellBookInventory.java (90%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui/GuiSpellBook.java => redux/container/SpellBookScreen.java} (88%) rename src/main/java/com/minelittlepony/unicopia/{inventory/gui => redux/container}/SpellbookResultSlot.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/CompoundCondition.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/IConditionFactory.java (73%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/IPageUnlockListener.java (69%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/IUnlockCondition.java (81%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/PageInstance.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/PageStateCondition.java (69%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/Pages.java (90%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/SpellCraftingEvent.java (81%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/AbstractSpecialRecipe.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/AffineIngredient.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/AffineIngredients.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/CompoundSpellIngredient.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/SingleSpellIngredient.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/SpecialRecipe.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/SpellIngredient.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/enchanting/recipe/SpellRecipe.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/ButterflyEntity.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/CloudEntity.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/ConstructionCloudEntity.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/CuccoonEntity.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/ProjectileEntity.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/RacingCloudEntity.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/RainbowEntity.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/SpearEntity.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/SpellbookEntity.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/SpellcastEntity.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/entity/WildCloudEntity.java (97%) rename src/main/java/com/minelittlepony/unicopia/{entity/capabilities => redux/entity/ai}/FollowCasterGoal.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/AlicornAmuletItem.java (92%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/AppleItem.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/BagOfHoldingItem.java (86%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/CloudPlacerItem.java (93%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/CursedMagicGemItem.java (80%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/EnchantedStaffItem.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/ExtendedShearsItem.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/MagicGemItem.java (90%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/MossItem.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/PredicatedBlockItem.java (96%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/RottenAppleItem.java (80%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/RottenTomatoItem.java (90%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/SpearItem.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/SpellbookItem.java (90%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/StaffItem.java (97%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/StickItem.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/SugaryItem.java (87%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/TomatoItem.java (94%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/TomatoSeedsItem.java (86%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/UItems.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/URecord.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/item/ZapAppleItem.java (93%) rename src/main/java/com/minelittlepony/unicopia/{magic/items => redux/magic}/ICastable.java (79%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/ITossedEffect.java (77%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/AbstractAttachableSpell.java (91%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/AwkwardSpell.java (84%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/ChangelingTrapSpell.java (89%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/ChargingSpell.java (83%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/DarknessSpell.java (91%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellDisguise.java => redux/magic/spells/DisguiseSpell.java} (89%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellDrake.java => redux/magic/spells/FaithfulAssistantSpell.java} (83%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellFlame.java => redux/magic/spells/FlameSpell.java} (51%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellLight.java => redux/magic/spells/GlowingSpell.java} (81%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellIce.java => redux/magic/spells/IceSpell.java} (55%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellInferno.java => redux/magic/spells/InfernoSpell.java} (64%) rename src/main/java/com/minelittlepony/unicopia/{ => redux}/magic/spells/PortalSpell.java (91%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellReveal.java => redux/magic/spells/RevealingSpell.java} (71%) rename src/main/java/com/minelittlepony/unicopia/{magic/spells/SpellScorch.java => redux/magic/spells/ScorchSpell.java} (74%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/structure/AbstractFeature.java (98%) rename src/main/java/com/minelittlepony/unicopia/{world => redux/structure}/AbstractFeaturesGen.java (97%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/structure/CloudDungeon.java (76%) rename src/main/java/com/minelittlepony/unicopia/{world => redux/structure}/CloudGen.java (90%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/structure/CustomSaplingGenerator.java (94%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/structure/GroundDungeon.java (64%) rename src/main/java/com/minelittlepony/unicopia/{world => redux/structure}/StructuresGen.java (89%) rename src/main/java/com/minelittlepony/unicopia/{world => redux}/structure/TemplateBasedFeature.java (98%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/DynamicToxicBlockItem.java (93%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/DynamicToxicItem.java (93%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/Toxic.java (70%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/ToxicBlockItem.java (94%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/ToxicItem.java (94%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/Toxicity.java (97%) rename src/main/java/com/minelittlepony/unicopia/{item/consumables => redux/toxin}/Toxin.java (95%) rename src/main/java/com/minelittlepony/unicopia/{ => redux/util}/projectile/IAdvancedProjectile.java (88%) rename src/main/java/com/minelittlepony/unicopia/{ => redux/util}/projectile/ITossableItem.java (92%) create mode 100644 src/main/java/com/minelittlepony/util/BasicEasingInterpolator.java create mode 100644 src/main/java/com/minelittlepony/util/IInterpolator.java create mode 100644 src/main/java/com/minelittlepony/util/MathUtil.java create mode 100644 src/main/java/com/minelittlepony/util/MotionCompositor.java diff --git a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java b/src/main/java/com/minelittlepony/unicopia/InteractionManager.java deleted file mode 100644 index 9604bc61..00000000 --- a/src/main/java/com/minelittlepony/unicopia/InteractionManager.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.minelittlepony.unicopia; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.minelittlepony.unicopia.client.ClientInteractionManager; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.mojang.authlib.GameProfile; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; - -public interface InteractionManager { - - static InteractionManager instance() { - if (Unicopia.interactionManager == null) { - if (ServerInteractionManager.isClientSide()) { - Unicopia.interactionManager = new ClientInteractionManager(); - } else { - Unicopia.interactionManager = new ServerInteractionManager(); - } - } - - return Unicopia.interactionManager; - } - - @Nullable - PlayerEntity getClientPlayer(); - - @Nullable - default IPlayer getIPlayer() { - return SpeciesList.instance().getPlayer(getClientPlayer()); - } - - boolean isClientPlayer(@Nullable PlayerEntity player); - - int getViewMode(); - - /** - * Side-independent method to create a new player. - * - * Returns an implementation of PlayerEntity appropriate to the side being called on. - */ - @Nonnull - PlayerEntity createPlayer(Entity observer, GameProfile profile); - - void postRenderEntity(Entity entity); - - boolean renderEntity(Entity entity, float renderPartialTicks); - -} diff --git a/src/main/java/com/minelittlepony/unicopia/UContainers.java b/src/main/java/com/minelittlepony/unicopia/UContainers.java deleted file mode 100644 index bbbc2d83..00000000 --- a/src/main/java/com/minelittlepony/unicopia/UContainers.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.minelittlepony.unicopia; - -import com.minelittlepony.unicopia.inventory.gui.ContainerOfHolding; - -import net.fabricmc.fabric.api.container.ContainerProviderRegistry; -import net.minecraft.util.Identifier; - -public class UContainers { - - public static final Identifier BAG_OF_HOLDING = new Identifier(Unicopia.MODID, "bag_of_holding"); - - static void bootstrap() { - ContainerProviderRegistry.INSTANCE.registerFactory(BAG_OF_HOLDING, ContainerOfHolding::new); - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/Unicopia.java b/src/main/java/com/minelittlepony/unicopia/Unicopia.java deleted file mode 100644 index a7264077..00000000 --- a/src/main/java/com/minelittlepony/unicopia/Unicopia.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.minelittlepony.unicopia; - -import net.fabricmc.api.ModInitializer; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.biome.Biome; -import java.util.Map; -import java.util.function.Function; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import com.google.gson.JsonObject; -import com.minelittlepony.unicopia.ability.PowersRegistry; -import com.minelittlepony.unicopia.command.Commands; -import com.minelittlepony.unicopia.enchanting.Pages; -import com.minelittlepony.unicopia.enchanting.recipe.AffineIngredients; -import com.minelittlepony.unicopia.enchanting.recipe.SpecialRecipe; -import com.minelittlepony.unicopia.enchanting.recipe.SpellRecipe; -import com.minelittlepony.unicopia.inventory.gui.SpellBookContainer; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.inventory.gui.GuiSpellBook; -import com.minelittlepony.unicopia.network.MsgPlayerAbility; -import com.minelittlepony.unicopia.network.MsgPlayerCapabilities; -import com.minelittlepony.unicopia.network.MsgRequestCapabilities; -import com.minelittlepony.unicopia.world.UWorld; - -public class Unicopia implements ModInitializer { - public static final String MODID = "unicopia"; - public static final String NAME = "@NAME@"; - public static final String VERSION = "@VERSION@"; - - public static final Logger LOGGER = LogManager.getLogger(); - - static InteractionManager interactionManager; - - private static IChannel channel; - - public static IChannel getConnection() { - return channel; - } - - @Override - public void onInitialize() { - Config.init(event.getModConfigurationDirectory()); - - channel = JumpingCastle.subscribeTo(MODID, () -> {}) - .listenFor(MsgRequestCapabilities.class) - .listenFor(MsgPlayerCapabilities.class) - .listenFor(MsgPlayerAbility.class); - - PowersRegistry.instance().init(); - - UAdvancements.init(); - - craftingManager.load(); - - Pages.instance().load(); - - UBlocks.bootstrap(); - UItems.bootstrap(); - Commands.bootstrap(); - UContainers.bootstrap(); - - UWorld.instance().init(); - - InteractionManager.instance().preInit(); - InteractionManager.instance().init(); - InteractionManager.instance().postInit(); - - UItems.fixRecipes(); - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/Hit.java b/src/main/java/com/minelittlepony/unicopia/ability/Hit.java deleted file mode 100644 index 0e878fd9..00000000 --- a/src/main/java/com/minelittlepony/unicopia/ability/Hit.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.minelittlepony.unicopia.ability; - -public class Hit implements IData { - -} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/IData.java b/src/main/java/com/minelittlepony/unicopia/ability/IData.java deleted file mode 100644 index 14f2be2e..00000000 --- a/src/main/java/com/minelittlepony/unicopia/ability/IData.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.minelittlepony.unicopia.ability; - -public interface IData { - -} diff --git a/src/main/java/com/minelittlepony/unicopia/client/ClientHooks.java b/src/main/java/com/minelittlepony/unicopia/client/ClientHooks.java deleted file mode 100644 index 807235ea..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/ClientHooks.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.minelittlepony.unicopia.client; - -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.client.gui.UHud; -import com.minelittlepony.unicopia.entity.capabilities.ICamera; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.item.UItems; -import com.mojang.blaze3d.platform.GlStateManager; - -import net.minecraft.client.MinecraftClient; - -class ClientHooks { - // This fixes lighting errors on the armour slots. - // #MahjongPls - public static void postEntityRender() { - GlStateManager.enableAlphaTest(); - - InteractionManager.instance().postRenderEntity(event.getEntity()); - } - - public static void preEntityRender() { - if (InteractionManager.instance().renderEntity(event.getEntity(), event.getPartialRenderTick())) { - event.setCanceled(true); - } - } - - public static void onDisplayGui(GuiScreenEvent.InitGuiEvent.Post event) { - if (event.getGui() instanceof GuiOptions || event.getGui() instanceof GuiShareToLan) { - ClientInteractionManager.addUniButton(event.getButtonList()); - } - } - - public static void onGameTick(TickEvent.ClientTickEvent event) { - if (event.phase == Phase.END) { - InteractionManager.instance().tick(); - } - } - - public static void beforePreRenderHud(RenderGameOverlayEvent.Pre event) { - GlStateManager.pushMatrix(); - - if (event.getType() != ElementType.ALL) { - IPlayer player = InteractionManager.instance().getIPlayer(); - - if (player != null && MinecraftClient.getInstance().world != null) { - UHud.instance.repositionElements(player, event.getResolution(), event.getType(), true); - } - } - } - - public static void afterPreRenderHud(RenderGameOverlayEvent.Pre event) { - if (event.isCanceled()) { - GlStateManager.popMatrix(); - } - } - - public static void postRenderHud(RenderGameOverlayEvent.Post event) { - - if (event.getType() == ElementType.ALL) { - IPlayer player = InteractionManager.instance().getIPlayer(); - - if (player != null && MinecraftClient.getInstance().world != null) { - UHud.instance.renderHud(player, event.getResolution()); - } - } - - GlStateManager.popMatrix(); - } - - public static void registerItemColours(ColorHandlerEvent.Item event) { - UItems.registerColors(event.getItemColors()); - UBlocks.registerColors(event.getItemColors(), event.getBlockColors()); - } - - public static void modifyFOV(FOVUpdateEvent event) { - event.setNewfov(SpeciesList.instance().getPlayer(event.getEntity()).getCamera().calculateFieldOfView(event.getFov())); - } - - public static void setupPlayerCamera(EntityViewRenderEvent.CameraSetup event) { - - IPlayer player = InteractionManager.instance().getIPlayer(); - - if (player != null) { - ICamera view = player.getCamera(); - - event.setRoll(view.calculateRoll()); - event.setPitch(view.calculatePitch(event.getPitch())); - event.setYaw(view.calculateYaw(event.getYaw())); - } - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/client/input/Keyboard.java b/src/main/java/com/minelittlepony/unicopia/client/input/Keyboard.java deleted file mode 100644 index 3a13d43f..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/input/Keyboard.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.minelittlepony.unicopia.client.input; - -import com.minelittlepony.unicopia.ServerInteractionManager; - -public final class Keyboard { - private static IKeyBindingHandler keyHandler; - - public static IKeyBindingHandler getKeyHandler() { - - if (keyHandler == null) { - if (ServerInteractionManager.isClientSide()) { - keyHandler = new KeyBindingsHandler(); - } else { - keyHandler = bind -> {}; - } - } - - return keyHandler; - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleDisk.java b/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleDisk.java deleted file mode 100644 index 2509d76f..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleDisk.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.minelittlepony.unicopia.client.particle; - -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.entity.Entity; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; - -import com.minelittlepony.unicopia.client.render.model.DiskModel; -import com.mojang.blaze3d.platform.GlStateManager; - -public class ParticleDisk extends ParticleSphere { - - private static final DiskModel model = new DiskModel(); - - protected float rotX; - protected float rotY; - protected float rotZ; - - public ParticleDisk(ParticleEffect type, World w, double x, double y, double z, double rX, double rY, double rZ) { - super(w, x, y, z, radius, tint, alpha); - - rotX = rX; - rotY = rY; - rotZ = rZ; - } - - @Override - public void renderParticle(BufferBuilder buffer, Entity viewer, float partialTicks, float x, float z, float yz, float xy, float xz) { - if (alpha <= 0) { - return; - } - - Color.glColor(tint, alpha); - - model.setPosition(this.x, this.y, this.z); - model.render(radius); - - GlStateManager.color(1, 1, 1, 1); - } -} - diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleRaindrops.java b/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleRaindrops.java deleted file mode 100644 index 4afc399f..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleRaindrops.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.minelittlepony.unicopia.client.particle; - -import net.minecraft.client.particle.RainSplashParticle; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.world.World; - -public class ParticleRaindrops extends RainSplashParticle { - - public ParticleRaindrops(ParticleEffect type, World world, double x, double y, double z, double dx, double dy, double dz) { - super(world, x, y, z); - velocityY = -0.1; - maxAge += 19; - } - - @Override - public void tick() { - super.tick(); - - if (onGround) { - velocityX *= 0.30000001192092896D; - velocityY = Math.random() * 0.20000000298023224D + 0.10000000149011612D; - velocityZ *= 0.30000001192092896D; - } - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/Config.java b/src/main/java/com/minelittlepony/unicopia/core/Config.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/Config.java rename to src/main/java/com/minelittlepony/unicopia/core/Config.java index f3319836..5fc561f6 100644 --- a/src/main/java/com/minelittlepony/unicopia/Config.java +++ b/src/main/java/com/minelittlepony/unicopia/core/Config.java @@ -1,11 +1,8 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import com.google.common.collect.Lists; @@ -28,12 +25,12 @@ public class Config { return instance; } - static void init(File directory) { - File file = new File(directory, "unicopia.json"); + public static void init(Path directory) { + Path file = directory.resolve("unicopia.json"); try { - if (file.exists()) { - try(JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(file)));) { + if (Files.exists(file)) { + try(JsonReader reader = new JsonReader(Files.newBufferedReader(file))) { instance = gson.fromJson(reader, Config.class); } } @@ -49,7 +46,7 @@ public class Config { instance.save(); } - private File file; + private Path file; @Expose(deserialize = false) private final String speciesWhiteListComment = @@ -105,11 +102,13 @@ public class Config { } public void save() { - if (file.exists()) { - file.delete(); + try { + Files.deleteIfExists(file); + } catch (IOException e1) { + e1.printStackTrace(); } - try (JsonWriter writer = new JsonWriter(new OutputStreamWriter(new FileOutputStream(file)))) { + try (JsonWriter writer = new JsonWriter(Files.newBufferedWriter(file))) { writer.setIndent(" "); gson.toJson(this, Config.class, writer); diff --git a/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java b/src/main/java/com/minelittlepony/unicopia/core/EquinePredicates.java similarity index 71% rename from src/main/java/com/minelittlepony/unicopia/EquinePredicates.java rename to src/main/java/com/minelittlepony/unicopia/core/EquinePredicates.java index 190674fd..f57acbc0 100644 --- a/src/main/java/com/minelittlepony/unicopia/EquinePredicates.java +++ b/src/main/java/com/minelittlepony/unicopia/core/EquinePredicates.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; import com.google.common.base.Predicate; @@ -6,36 +6,36 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; -public final class EquinePredicates { - public static final Predicate INTERACT_WITH_CLOUDS = player -> { +public interface EquinePredicates { + Predicate INTERACT_WITH_CLOUDS = player -> { return player != null && SpeciesList.instance().getPlayer(player).getSpecies().canInteractWithClouds(); }; - public static final Predicate MAGI = entity -> { + Predicate MAGI = entity -> { return entity instanceof PlayerEntity && SpeciesList.instance().getPlayer((PlayerEntity)entity).getSpecies().canCast(); }; - public static final Predicate ITEMS = entity -> { + Predicate ITEMS = entity -> { return entity instanceof ItemEntity && entity.isAlive() && entity.age > 1; }; - public static final Predicate ITEM_INTERACT_WITH_CLOUDS = item -> { + Predicate ITEM_INTERACT_WITH_CLOUDS = item -> { return ITEMS.test(item) && SpeciesList.instance().getEntity(item).getSpecies().canInteractWithClouds(); }; - public static final Predicate ENTITY_INTERACT_WITH_CLOUDS = entity -> { + Predicate ENTITY_INTERACT_WITH_CLOUDS = entity -> { return entity != null && ( (entity instanceof PlayerEntity && INTERACT_WITH_CLOUDS.test((PlayerEntity)entity)) || (entity instanceof ItemEntity && ITEM_INTERACT_WITH_CLOUDS.test((ItemEntity)entity)) ); }; - public static final Predicate BUGGY = entity -> { + Predicate BUGGY = entity -> { return entity instanceof PlayerEntity && SpeciesList.instance().getPlayer((PlayerEntity)entity).getSpecies() == Race.CHANGELING; }; - public static PlayerEntity getPlayerFromEntity(Entity entity) { + static PlayerEntity getPlayerFromEntity(Entity entity) { if (entity instanceof PlayerEntity) { return (PlayerEntity) entity; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/input/IKeyBindingHandler.java b/src/main/java/com/minelittlepony/unicopia/core/IKeyBindingHandler.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/client/input/IKeyBindingHandler.java rename to src/main/java/com/minelittlepony/unicopia/core/IKeyBindingHandler.java index ba1f7f2c..a8a3b549 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/input/IKeyBindingHandler.java +++ b/src/main/java/com/minelittlepony/unicopia/core/IKeyBindingHandler.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.input; +package com.minelittlepony.unicopia.core; public interface IKeyBindingHandler { @@ -9,12 +9,10 @@ public interface IKeyBindingHandler { } public interface IKeyBinding { - String getKeyCategory(); String getKeyName(); int getKeyCode(); - } } diff --git a/src/main/java/com/minelittlepony/unicopia/ServerInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/core/InteractionManager.java similarity index 57% rename from src/main/java/com/minelittlepony/unicopia/ServerInteractionManager.java rename to src/main/java/com/minelittlepony/unicopia/core/InteractionManager.java index 80767077..3a4e364c 100644 --- a/src/main/java/com/minelittlepony/unicopia/ServerInteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/core/InteractionManager.java @@ -1,35 +1,26 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.util.dummy.DummyPlayerEntity; -import com.minelittlepony.util.dummy.DummyServerPlayerEntity; +import com.minelittlepony.unicopia.core.util.dummy.DummyPlayerEntity; +import com.minelittlepony.unicopia.core.util.dummy.DummyServerPlayerEntity; import com.mojang.authlib.GameProfile; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.world.ServerWorld; -public class ServerInteractionManager implements InteractionManager { +public class InteractionManager { - @Deprecated - public static boolean isClientSide() { - return false; + public static InteractionManager instance() { + return UnicopiaCore.interactionManager; } - @Override - @Nullable - public PlayerEntity getClientPlayer() { - return null; - } - - @Override public boolean isClientPlayer(@Nullable PlayerEntity player) { return false; } - @Override public int getViewMode() { return 0; } @@ -39,7 +30,6 @@ public class ServerInteractionManager implements InteractionManager { * * Returns an implementation of PlayerEntity appropriate to the side being called on. */ - @Override @Nonnull public PlayerEntity createPlayer(Entity observer, GameProfile profile) { if (observer.world instanceof ServerWorld) { @@ -47,15 +37,4 @@ public class ServerInteractionManager implements InteractionManager { } return new DummyPlayerEntity(observer.world, profile); } - - @Override - public void postRenderEntity(Entity entity) { - - } - - @Override - public boolean renderEntity(Entity entity, float renderPartialTicks) { - return false; - } - } diff --git a/src/main/java/com/minelittlepony/unicopia/Race.java b/src/main/java/com/minelittlepony/unicopia/core/Race.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/Race.java rename to src/main/java/com/minelittlepony/unicopia/core/Race.java index ffbf1524..21389253 100644 --- a/src/main/java/com/minelittlepony/unicopia/Race.java +++ b/src/main/java/com/minelittlepony/unicopia/core/Race.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/minelittlepony/unicopia/core/ServerInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/core/ServerInteractionManager.java new file mode 100644 index 00000000..2552d016 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/ServerInteractionManager.java @@ -0,0 +1,9 @@ +package com.minelittlepony.unicopia.core; + +public class ServerInteractionManager { + + @Deprecated + public static boolean isClientSide() { + return false; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/SpeciesList.java b/src/main/java/com/minelittlepony/unicopia/core/SpeciesList.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/SpeciesList.java rename to src/main/java/com/minelittlepony/unicopia/core/SpeciesList.java index 0dca8303..c64e6ecc 100644 --- a/src/main/java/com/minelittlepony/unicopia/SpeciesList.java +++ b/src/main/java/com/minelittlepony/unicopia/core/SpeciesList.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; import java.util.Optional; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Config; -import com.minelittlepony.unicopia.ducks.IRaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.Config; +import com.minelittlepony.unicopia.core.ducks.IRaceContainerHolder; +import com.minelittlepony.unicopia.core.entity.IEntity; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/UEffects.java b/src/main/java/com/minelittlepony/unicopia/core/UEffects.java similarity index 77% rename from src/main/java/com/minelittlepony/unicopia/UEffects.java rename to src/main/java/com/minelittlepony/unicopia/core/UEffects.java index 173b9241..88ca5bf7 100644 --- a/src/main/java/com/minelittlepony/unicopia/UEffects.java +++ b/src/main/java/com/minelittlepony/unicopia/core/UEffects.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.CustomStatusEffect; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectInstance; @@ -11,7 +11,7 @@ import net.minecraft.util.Identifier; public class UEffects { - public static final StatusEffect FOOD_POISONING = new CustomStatusEffect(new Identifier(Unicopia.MODID, "food_poisoning"), StatusEffectType.BENEFICIAL, 3484199) + public static final StatusEffect FOOD_POISONING = new CustomStatusEffect(new Identifier(UnicopiaCore.MODID, "food_poisoning"), StatusEffectType.BENEFICIAL, 3484199) .setSilent() .direct((p, e, i) -> { StatusEffectInstance nausea = e.getStatusEffect(StatusEffects.NAUSEA); diff --git a/src/main/java/com/minelittlepony/unicopia/UParticles.java b/src/main/java/com/minelittlepony/unicopia/core/UParticles.java similarity index 64% rename from src/main/java/com/minelittlepony/unicopia/UParticles.java rename to src/main/java/com/minelittlepony/unicopia/core/UParticles.java index e83106fc..e4c38ff9 100644 --- a/src/main/java/com/minelittlepony/unicopia/UParticles.java +++ b/src/main/java/com/minelittlepony/unicopia/core/UParticles.java @@ -1,17 +1,14 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; -import com.minelittlepony.unicopia.client.particle.ParticleChangelingMagic; -import com.minelittlepony.unicopia.client.particle.ParticleDisk; -import com.minelittlepony.unicopia.client.particle.ParticleRaindrops; -import com.minelittlepony.unicopia.client.particle.ParticleSphere; -import com.minelittlepony.unicopia.client.particle.ParticleUnicornMagic; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; import net.minecraft.particle.DefaultParticleType; import net.minecraft.util.Identifier; public class UParticles { + // TODO: + interface ParticleTypeRegistry { + static ParticleTypeRegistry getTnstance() {return null;} + DefaultParticleType register(Identifier id); + } public static final DefaultParticleType UNICORN_MAGIC = ParticleTypeRegistry.getTnstance().register(new Identifier("unicopia", "unicorn_magic")); public static final DefaultParticleType CHANGELING_MAGIC = ParticleTypeRegistry.getTnstance().register(new Identifier("unicopia", "changeling_magic")); diff --git a/src/main/java/com/minelittlepony/unicopia/USounds.java b/src/main/java/com/minelittlepony/unicopia/core/USounds.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/USounds.java rename to src/main/java/com/minelittlepony/unicopia/core/USounds.java index 71f044a6..831bfa95 100644 --- a/src/main/java/com/minelittlepony/unicopia/USounds.java +++ b/src/main/java/com/minelittlepony/unicopia/core/USounds.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.core; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; @@ -21,7 +21,7 @@ public class USounds { public static final SoundEvent RECORD_FUNK = register("record.funk"); private static SoundEvent register(String name) { - Identifier id = new Identifier(Unicopia.MODID, name); + Identifier id = new Identifier(UnicopiaCore.MODID, name); return Registry.register(Registry.SOUND_EVENT, id, new SoundEvent(id)); } diff --git a/src/main/java/com/minelittlepony/unicopia/core/UTags.java b/src/main/java/com/minelittlepony/unicopia/core/UTags.java new file mode 100644 index 00000000..86da7726 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/UTags.java @@ -0,0 +1,13 @@ +package com.minelittlepony.unicopia.core; + +import net.fabricmc.fabric.api.tag.TagRegistry; +import net.minecraft.item.Item; +import net.minecraft.tag.Tag; +import net.minecraft.util.Identifier; + +public class UTags { + // TODO: includes unicopia:alicorn_amulet + public static final Tag CURSED_ARTEFACTS = TagRegistry.item(new Identifier(UnicopiaCore.MODID, "cursed_artefacts")); + + static void bootstrap() {} +} diff --git a/src/main/java/com/minelittlepony/unicopia/core/UnicopiaCore.java b/src/main/java/com/minelittlepony/unicopia/core/UnicopiaCore.java new file mode 100644 index 00000000..9eab38a6 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/UnicopiaCore.java @@ -0,0 +1,44 @@ +package com.minelittlepony.unicopia.core; + +import net.fabricmc.api.ModInitializer; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import com.minelittlepony.common.util.GamePaths; +import com.minelittlepony.jumpingcastle.api.Channel; +import com.minelittlepony.jumpingcastle.api.JumpingCastle; +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.command.Commands; +import com.minelittlepony.unicopia.core.network.MsgPlayerAbility; +import com.minelittlepony.unicopia.core.network.MsgPlayerCapabilities; +import com.minelittlepony.unicopia.core.network.MsgRequestCapabilities; + +public class UnicopiaCore implements ModInitializer { + public static final String MODID = "unicopia"; + public static final String NAME = "@NAME@"; + public static final String VERSION = "@VERSION@"; + + public static final Logger LOGGER = LogManager.getLogger(); + + public static InteractionManager interactionManager = new InteractionManager(); + + private static Channel channel; + + public static Channel getConnection() { + return channel; + } + + @Override + public void onInitialize() { + Config.init(GamePaths.getConfigDirectory()); + + channel = JumpingCastle.subscribeTo(MODID, () -> {}) + .listenFor(MsgRequestCapabilities.class) + .listenFor(MsgPlayerCapabilities.class) + .listenFor(MsgPlayerAbility.class); + + UTags.bootstrap(); + Commands.bootstrap(); + PowersRegistry.instance().init(); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/core/ability/Hit.java b/src/main/java/com/minelittlepony/unicopia/core/ability/Hit.java new file mode 100644 index 00000000..c166846c --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/Hit.java @@ -0,0 +1,5 @@ +package com.minelittlepony.unicopia.core.ability; + +public class Hit implements IPower.IData { + +} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/IAbilityReceiver.java b/src/main/java/com/minelittlepony/unicopia/core/ability/IAbilityReceiver.java similarity index 57% rename from src/main/java/com/minelittlepony/unicopia/ability/IAbilityReceiver.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/IAbilityReceiver.java index cf98e25b..a8a7cac7 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/IAbilityReceiver.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/IAbilityReceiver.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; -import com.minelittlepony.unicopia.ability.IPower; +import com.minelittlepony.unicopia.core.ability.IPower; public interface IAbilityReceiver { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/IFlyingPredicate.java b/src/main/java/com/minelittlepony/unicopia/core/ability/IFlyingPredicate.java similarity index 63% rename from src/main/java/com/minelittlepony/unicopia/ability/IFlyingPredicate.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/IFlyingPredicate.java index 63f395c1..2407b5c4 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/IFlyingPredicate.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/IFlyingPredicate.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; /** * Predicate for abilities to control whether a player can fly. diff --git a/src/main/java/com/minelittlepony/unicopia/ability/IHeightPredicate.java b/src/main/java/com/minelittlepony/unicopia/core/ability/IHeightPredicate.java similarity index 69% rename from src/main/java/com/minelittlepony/unicopia/ability/IHeightPredicate.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/IHeightPredicate.java index c0fd7ca3..924b06b1 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/IHeightPredicate.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/IHeightPredicate.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; /** * Predicate for abilities to control what the player's physical height is. diff --git a/src/main/java/com/minelittlepony/unicopia/ability/IPower.java b/src/main/java/com/minelittlepony/unicopia/core/ability/IPower.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/ability/IPower.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/IPower.java index 4ee0e56f..b7a16131 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/IPower.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/IPower.java @@ -1,14 +1,14 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.client.input.IKeyBindingHandler; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.IKeyBindingHandler; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.minecraft.world.World; -public interface IPower extends IKeyBindingHandler.IKeyBinding { +public interface IPower extends IKeyBindingHandler.IKeyBinding { @Override default String getKeyCategory() { @@ -75,4 +75,7 @@ public interface IPower extends IKeyBindingHandler.IKeyBinding */ void postApply(IPlayer player); + public interface IData { + + } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/Location.java b/src/main/java/com/minelittlepony/unicopia/core/ability/Location.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/ability/Location.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/Location.java index 115783c4..4d930dfa 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/Location.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/Location.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import com.google.gson.annotations.Expose; import net.minecraft.util.math.BlockPos; -public class Location implements IData { +public class Location implements IPower.IData { @Expose public int x; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/Numeric.java b/src/main/java/com/minelittlepony/unicopia/core/ability/Numeric.java similarity index 58% rename from src/main/java/com/minelittlepony/unicopia/ability/Numeric.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/Numeric.java index 1cec905d..4bff02bf 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/Numeric.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/Numeric.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import com.google.gson.annotations.Expose; -public class Numeric implements IData { +public class Numeric implements IPower.IData { @Expose public int type; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerCarry.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerCarry.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerCarry.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowerCarry.java index 019cc258..6a55e1a4 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerCarry.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerCarry.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.VecHelper; import net.minecraft.client.network.packet.EntityPassengersSetS2CPacket; import net.minecraft.entity.Entity; @@ -13,6 +13,9 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.World; +/** + * Pegasi ability to pick up and carry other players + */ public class PowerCarry implements IPower { @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerFeed.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerFeed.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerFeed.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowerFeed.java index 20386804..a073c357 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerFeed.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerFeed.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import java.util.List; import java.util.stream.Collectors; @@ -7,10 +7,10 @@ import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.VecHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -25,6 +25,9 @@ import net.minecraft.entity.passive.SheepEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.particle.ParticleTypes; +/** + * Changeling ability to restore health from mobs + */ public class PowerFeed implements IPower { @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerGrow.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerGrow.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerGrow.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowerGrow.java index b3e98f9e..653a6b8a 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerGrow.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerGrow.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.VecHelper; import net.minecraft.block.BlockState; import net.minecraft.item.BoneMealItem; @@ -17,6 +17,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +/** + * Earth Pony ability to grow crops + */ public class PowerGrow implements IPower { @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerMagic.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerMagic.java similarity index 68% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerMagic.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowerMagic.java index 7d8191bd..c99429c1 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerMagic.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerMagic.java @@ -1,11 +1,16 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.spells.SpellShield; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.spell.ShieldSpell; + +/** + * A magic casting ability for unicorns. + * (only shields for now) + */ public class PowerMagic implements IPower { @Override @@ -45,10 +50,11 @@ public class PowerMagic implements IPower { @Override public void apply(IPlayer player, Hit data) { - if (player.getEffect() instanceof SpellShield) { + // TODO: A way to pick the active effect + if (player.getEffect() instanceof ShieldSpell) { player.setEffect(null); } else { - player.setEffect(new SpellShield()); + player.setEffect(new ShieldSpell()); } } diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerTeleport.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerTeleport.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerTeleport.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowerTeleport.java index bc98ff34..ac4a01f9 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerTeleport.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowerTeleport.java @@ -1,10 +1,11 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.VecHelper; + +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.VecHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -23,6 +24,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +/** + * Unicorn teleport ability + */ public class PowerTeleport implements IPower { @Override diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowersRegistry.java b/src/main/java/com/minelittlepony/unicopia/core/ability/PowersRegistry.java similarity index 56% rename from src/main/java/com/minelittlepony/unicopia/ability/PowersRegistry.java rename to src/main/java/com/minelittlepony/unicopia/core/ability/PowersRegistry.java index 5d5773e2..b94fed43 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowersRegistry.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ability/PowersRegistry.java @@ -1,13 +1,13 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.core.ability; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.client.input.Keyboard; +import com.minelittlepony.unicopia.core.Race; public class PowersRegistry { @@ -17,9 +17,9 @@ public class PowersRegistry { return INSTANCE; } - private final Map>> keyToPowerMap = new HashMap<>(); + private final Map>> keyToPowerMap = new HashMap<>(); - private final Map> powerNamesMap = new HashMap<>(); + private final Map> powerNamesMap = new HashMap<>(); private PowersRegistry() { } @@ -27,36 +27,35 @@ public class PowersRegistry { public void init() { registerPower(new PowerTeleport()); registerPower(new PowerMagic()); - registerPower(new PowerStomp()); registerPower(new PowerGrow()); registerPower(new PowerFeed()); registerPower(new PowerCarry()); - registerPower(new PowerDisguise()); - registerPower(new PowerCloudBase()); - registerPower(new PowerEngulf()); } public boolean hasRegisteredPower(int keyCode) { return keyToPowerMap.containsKey(keyCode); } - public Optional> getCapablePowerFromKey(int keyCode, Race race) { + public Optional> getCapablePowerFromKey(int keyCode, Race race) { return getKeyCodePool(keyCode).stream() .filter(power -> power.canUse(race)) .findFirst(); } - public Optional> getPowerFromName(String name) { + public Optional> getPowerFromName(String name) { return Optional.ofNullable(powerNamesMap.get(name)); } - private List> getKeyCodePool(int keyCode) { + private List> getKeyCodePool(int keyCode) { return keyToPowerMap.computeIfAbsent(keyCode, ArrayList::new); } - public void registerPower(IPower power) { + public void registerPower(IPower power) { getKeyCodePool(power.getKeyCode()).add(power); powerNamesMap.put(power.getKeyName(), power); - Keyboard.getKeyHandler().addKeybind(power); + } + + public Collection> getValues() { + return powerNamesMap.values(); } } diff --git a/src/main/java/com/minelittlepony/unicopia/client/input/InversionAwareKeyboardInput.java b/src/main/java/com/minelittlepony/unicopia/core/client/InversionAwareKeyboardInput.java similarity index 86% rename from src/main/java/com/minelittlepony/unicopia/client/input/InversionAwareKeyboardInput.java rename to src/main/java/com/minelittlepony/unicopia/core/client/InversionAwareKeyboardInput.java index 393544d6..cea29e81 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/input/InversionAwareKeyboardInput.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/InversionAwareKeyboardInput.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.input; +package com.minelittlepony.unicopia.core.client; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.input.Input; @@ -40,7 +40,7 @@ public class InversionAwareKeyboardInput extends KeyboardInput { this.movementSideways = proxy.movementSideways; this.movementForward = proxy.movementForward; - IPlayer player = InteractionManager.instance().getIPlayer(); + IPlayer player = SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player); if (player.getGravity().getGravitationConstant() < 0) { boolean tmp = pressingLeft; diff --git a/src/main/java/com/minelittlepony/unicopia/client/input/KeyBindingsHandler.java b/src/main/java/com/minelittlepony/unicopia/core/client/KeyBindingsHandler.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/client/input/KeyBindingsHandler.java rename to src/main/java/com/minelittlepony/unicopia/core/client/KeyBindingsHandler.java index e99ab4aa..0ab27fa6 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/input/KeyBindingsHandler.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/KeyBindingsHandler.java @@ -1,12 +1,13 @@ -package com.minelittlepony.unicopia.client.input; +package com.minelittlepony.unicopia.core.client; import java.util.ArrayList; import java.util.List; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.ability.PowersRegistry; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.IKeyBindingHandler; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.fabricmc.fabric.api.client.keybinding.KeyBindingRegistry; @@ -16,7 +17,7 @@ import net.minecraft.client.util.InputUtil; import net.minecraft.util.Identifier; -class KeyBindingsHandler implements IKeyBindingHandler { +public class KeyBindingsHandler implements IKeyBindingHandler { private final MinecraftClient client = MinecraftClient.getInstance(); private final List bindings = new ArrayList<>(); @@ -28,7 +29,7 @@ class KeyBindingsHandler implements IKeyBindingHandler { public void addKeybind(IKeyBinding p) { KeyBindingRegistry.INSTANCE.addCategory(p.getKeyCategory()); - FabricKeyBinding b = FabricKeyBinding.Builder.create(new Identifier(Unicopia.MODID, p.getKeyName()), InputUtil.Type.KEYSYM, p.getKeyCode(), p.getKeyCategory()).build(); + FabricKeyBinding b = FabricKeyBinding.Builder.create(new Identifier(UnicopiaCore.MODID, p.getKeyName()), InputUtil.Type.KEYSYM, p.getKeyCode(), p.getKeyCategory()).build(); KeyBindingRegistry.INSTANCE.register(b); bindings.add(b); diff --git a/src/main/java/com/minelittlepony/unicopia/client/input/MouseControl.java b/src/main/java/com/minelittlepony/unicopia/core/client/MouseControl.java similarity index 64% rename from src/main/java/com/minelittlepony/unicopia/client/input/MouseControl.java rename to src/main/java/com/minelittlepony/unicopia/core/client/MouseControl.java index 8b0c9052..ee914800 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/input/MouseControl.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/MouseControl.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.client.input; +package com.minelittlepony.unicopia.core.client; -import com.minelittlepony.unicopia.InteractionManager; +import com.minelittlepony.unicopia.core.SpeciesList; import net.minecraft.client.MinecraftClient; import net.minecraft.client.Mouse; @@ -13,7 +13,7 @@ public class MouseControl extends Mouse { @Override public void updateMouse() { - if (InteractionManager.instance().getIPlayer().getGravity().getGravitationConstant() < 0) { + if (SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player).getGravity().getGravitationConstant() < 0) { //cursorDeltaX = -cursorDeltaX; //cursorDeltaY = -cursorDeltaY; } diff --git a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/core/client/UnicopiaCoreClient.java similarity index 55% rename from src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java rename to src/main/java/com/minelittlepony/unicopia/core/client/UnicopiaCoreClient.java index e1db7df6..e18482c4 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/ClientInteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/UnicopiaCoreClient.java @@ -1,41 +1,37 @@ -package com.minelittlepony.unicopia.client; - -import java.util.List; -import java.util.UUID; +package com.minelittlepony.unicopia.core.client; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.MineLP; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ServerInteractionManager; -import com.minelittlepony.unicopia.Config; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.UEntities; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.client.ability.render.DisguiseRenderer; -import com.minelittlepony.unicopia.client.gui.SettingsScreen; -import com.minelittlepony.unicopia.client.input.Keyboard; -import com.minelittlepony.unicopia.client.input.MouseControl; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.inventory.gui.GuiOfHolding; -import com.minelittlepony.unicopia.client.input.InversionAwareKeyboardInput; -import com.minelittlepony.unicopia.network.MsgRequestCapabilities; -import com.minelittlepony.util.dummy.DummyClientPlayerEntity; +import com.minelittlepony.common.event.ClientReadyCallback; +import com.minelittlepony.jumpingcastle.api.Target; +import com.minelittlepony.unicopia.core.Config; +import com.minelittlepony.unicopia.core.IKeyBindingHandler; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.network.MsgRequestCapabilities; +import com.minelittlepony.unicopia.core.util.MineLPConnector; +import com.minelittlepony.unicopia.core.util.dummy.DummyClientPlayerEntity; +import com.minelittlepony.unicopia.redux.client.render.DisguiseRenderer; import com.mojang.authlib.GameProfile; import com.mojang.blaze3d.platform.GlStateManager; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.input.Input; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.container.ContainerType; -import net.minecraft.container.NameableContainerProvider; +import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; -public class ClientInteractionManager extends ServerInteractionManager { +public class UnicopiaCoreClient extends InteractionManager implements ClientModInitializer { + + private final IKeyBindingHandler keyboard = new KeyBindingsHandler(); /** * The race preferred by the client - as determined by mine little pony. @@ -50,7 +46,7 @@ public class ClientInteractionManager extends ServerInteractionManager { private static Race getclientPlayerRace() { if (!Config.instance().ignoresMineLittlePony() && MinecraftClient.getInstance().player != null) { - Race race = MineLP.getPlayerPonyRace(); + Race race = MineLPConnector.getPlayerPonyRace(); if (!race.isDefault()) { return race; @@ -61,55 +57,39 @@ public class ClientInteractionManager extends ServerInteractionManager { return Config.instance().getPrefferedRace(); } - @Override - @Nullable - public PlayerEntity getClientPlayer() { - return MinecraftClient.getInstance().player; - } - - @Override - @Nullable - public PlayerEntity getPlayerByUUID(UUID playerId) { - MinecraftClient mc = MinecraftClient.getInstance(); - - if (mc.player.getUuid().equals(playerId)) { - return mc.player; - } - - return mc.world.getPlayerByUuid(playerId); - } - @Override @Nonnull public PlayerEntity createPlayer(Entity observer, GameProfile profile) { - return new DummyClientPlayerEntity(observer.world, profile); + if (observer.world instanceof ClientWorld) { + return new DummyClientPlayerEntity((ClientWorld)observer.world, profile); + } + return super.createPlayer(observer, profile); } @Override public boolean isClientPlayer(@Nullable PlayerEntity player) { - if (getClientPlayer() == player) { + if (MinecraftClient.getInstance().player == player) { return true; } - if (getClientPlayer() == null || player == null) { + if (MinecraftClient.getInstance().player == null || player == null) { return false; } - return IPlayer.equal(getClientPlayer(), player); + return IPlayer.equal(MinecraftClient.getInstance().player, player); } @Override public int getViewMode() { - return MinecraftClient.getInstance().gameSettings.thirdPersonView; + return MinecraftClient.getInstance().options.perspective; } - @Override public void postRenderEntity(Entity entity) { if (entity instanceof PlayerEntity) { IPlayer iplayer = SpeciesList.instance().getPlayer((PlayerEntity)entity); if (iplayer.getGravity().getGravitationConstant() < 0) { - GlStateManager.translate(0, entity.height, 0); + GlStateManager.translated(0, entity.getDimensions(entity.getPose()).height, 0); GlStateManager.scalef(1, -1, 1); entity.prevPitch *= -1; entity.pitch *= -1; @@ -117,7 +97,6 @@ public class ClientInteractionManager extends ServerInteractionManager { } } - @Override public boolean renderEntity(Entity entity, float renderPartialTicks) { if (DisguiseRenderer.getInstance().renderDisguise(entity, renderPartialTicks)) { @@ -129,7 +108,7 @@ public class ClientInteractionManager extends ServerInteractionManager { if (iplayer.getGravity().getGravitationConstant() < 0) { GlStateManager.scalef(1, -1, 1); - GlStateManager.translate(0, -entity.height, 0); + GlStateManager.translated(0, -entity.getDimensions(entity.getPose()).height, 0); entity.prevPitch *= -1; entity.pitch *= -1; } @@ -147,19 +126,18 @@ public class ClientInteractionManager extends ServerInteractionManager { } @Override - public void preInit() { - UEntities.preInit(); - UParticles.init(); - } - - @Override - public void init() { + public void onInitializeClient() { clientPlayerRace = getclientPlayerRace(); + UnicopiaCore.interactionManager = this; + + ClientTickCallback.EVENT.register(this::tick); + ClientReadyCallback.EVENT.register(client -> { + PowersRegistry.instance().getValues().forEach(keyboard::addKeybind); + }); } - @Override - public void tick() { - PlayerEntity player = InteractionManager.instance().getClientPlayer(); + private void tick(MinecraftClient client) { + PlayerEntity player = client.player; if (player != null && !player.removed) { Race newRace = getclientPlayerRace(); @@ -167,13 +145,11 @@ public class ClientInteractionManager extends ServerInteractionManager { if (newRace != clientPlayerRace) { clientPlayerRace = newRace; - Unicopia.getConnection().send(new MsgRequestCapabilities(player, clientPlayerRace), Target.SERVER); + UnicopiaCore.getConnection().send(new MsgRequestCapabilities(player, clientPlayerRace), Target.SERVER); } } - Keyboard.getKeyHandler().onKeyInput(); - - MinecraftClient client = MinecraftClient.getInstance(); + keyboard.onKeyInput(); if (player instanceof ClientPlayerEntity) { ClientPlayerEntity sp = (ClientPlayerEntity)player; diff --git a/src/main/java/com/minelittlepony/unicopia/core/client/gui/ClientHooks.java b/src/main/java/com/minelittlepony/unicopia/core/client/gui/ClientHooks.java new file mode 100644 index 00000000..0bfc3848 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/client/gui/ClientHooks.java @@ -0,0 +1,30 @@ +package com.minelittlepony.unicopia.core.client.gui; + +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.client.gui.UHud; +import com.mojang.blaze3d.platform.GlStateManager; + +import net.minecraft.client.MinecraftClient; + +class ClientHooks { + public static void beforePreRenderHud() { + GlStateManager.pushMatrix(); + + MinecraftClient client = MinecraftClient.getInstance(); + + if (client.player != null && client.world != null) { + UHud.instance.repositionElements(SpeciesList.instance().getPlayer(client.player), client.window, true); + } + } + + public static void postRenderHud() { + + MinecraftClient client = MinecraftClient.getInstance(); + + if (client.player != null && client.world != null) { + UHud.instance.renderHud(SpeciesList.instance().getPlayer(client.player), client.window); + } + + GlStateManager.popMatrix(); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java b/src/main/java/com/minelittlepony/unicopia/core/client/gui/FlightExperienceBar.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java rename to src/main/java/com/minelittlepony/unicopia/core/client/gui/FlightExperienceBar.java index 40288de8..2e64fbf7 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/FlightExperienceBar.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/gui/FlightExperienceBar.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.client.gui; +package com.minelittlepony.unicopia.core.client.gui; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.gui.DrawableHelper; diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java b/src/main/java/com/minelittlepony/unicopia/core/client/gui/IHudElement.java similarity index 56% rename from src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java rename to src/main/java/com/minelittlepony/unicopia/core/client/gui/IHudElement.java index 466d713e..0b16d2c3 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/IHudElement.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/gui/IHudElement.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.client.gui; +package com.minelittlepony.unicopia.core.client.gui; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; public interface IHudElement { diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/SettingsScreen.java b/src/main/java/com/minelittlepony/unicopia/core/client/gui/SettingsScreen.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/client/gui/SettingsScreen.java rename to src/main/java/com/minelittlepony/unicopia/core/client/gui/SettingsScreen.java index 97a5c51b..4fa4b893 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/SettingsScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/gui/SettingsScreen.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.gui; +package com.minelittlepony.unicopia.core.client.gui; import com.minelittlepony.common.client.gui.GameGui; import com.minelittlepony.common.client.gui.element.Button; diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java b/src/main/java/com/minelittlepony/unicopia/core/client/gui/UHud.java similarity index 62% rename from src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java rename to src/main/java/com/minelittlepony/unicopia/core/client/gui/UHud.java index afdd7624..58996c46 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/UHud.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/gui/UHud.java @@ -1,16 +1,16 @@ -package com.minelittlepony.unicopia.client.gui; +package com.minelittlepony.unicopia.core.client.gui; import java.util.ArrayList; import java.util.List; import org.lwjgl.opengl.GL11; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.util.Window; public class UHud { @@ -34,7 +34,7 @@ public class UHud { elements.add(new FlightExperienceBar()); } - public void renderHud(IPlayer player, ScaledResolution resolution) { + public void renderHud(IPlayer player, Window resolution) { this.width = resolution.getScaledWidth(); this.height = resolution.getScaledHeight(); this.player = player; @@ -43,29 +43,13 @@ public class UHud { elements.forEach(this::renderElement); } - public void repositionElements(IPlayer player, ScaledResolution resolution, ElementType type, boolean begin) { - this.width = resolution.getScaledWidth(); - this.height = resolution.getScaledHeight(); + public void repositionElements(IPlayer player, Window window, boolean begin) { + this.width = window.getScaledWidth(); + this.height = window.getScaledHeight(); this.player = player; this.begin = begin; - if (isSurvivalElement(type)) { - elements.forEach(this::positionElement); - } - } - - protected boolean isSurvivalElement(ElementType type) { - switch (type) { - case ARMOR: - case HEALTH: - case FOOD: - case AIR: - case EXPERIENCE: - case HEALTHMOUNT: - case JUMPBAR: - return true; - default: return false; - } + elements.forEach(this::positionElement); } private void positionElement(IHudElement element) { diff --git a/src/main/java/com/minelittlepony/unicopia/core/client/particle/DiskParticle.java b/src/main/java/com/minelittlepony/unicopia/core/client/particle/DiskParticle.java new file mode 100644 index 00000000..bd7ada1d --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/client/particle/DiskParticle.java @@ -0,0 +1,47 @@ +package com.minelittlepony.unicopia.core.client.particle; + +import net.minecraft.client.render.BufferBuilder; +import net.minecraft.client.render.Camera; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.world.World; + +import org.lwjgl.opengl.GL14; + +import com.minelittlepony.unicopia.core.client.render.DiskModel; +import com.mojang.blaze3d.platform.GlStateManager; + +public class DiskParticle extends SphereParticle { + + private static final DiskModel model = new DiskModel(); + + protected double rotX; + protected double rotY; + protected double rotZ; + + public DiskParticle(ParticleEffect type, World w, + double x, double y, double z, + float radius, + int red, int green, int blue, float alpha, + double rX, double rY, double rZ) { + super(w, x, y, z, radius, red, green, blue, alpha); + + rotX = rX; + rotY = rY; + rotZ = rZ; + } + + @Override + public void buildGeometry(BufferBuilder buffer, Camera viewer, float partialTicks, float x, float z, float yz, float xy, float xz) { + if (alpha <= 0) { + return; + } + + GL14.glBlendColor(red, green, blue, alpha); + + model.setPosition(this.x, this.y, this.z); + model.render(radius); + + GlStateManager.color4f(1, 1, 1, 1); + } +} + diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleChangelingMagic.java b/src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleChangelingMagic.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/client/particle/ParticleChangelingMagic.java rename to src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleChangelingMagic.java index 8d7e2d89..3155aa72 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleChangelingMagic.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleChangelingMagic.java @@ -1,5 +1,7 @@ -package com.minelittlepony.unicopia.client.particle; +package com.minelittlepony.unicopia.core.client.particle; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleFactory; import net.minecraft.client.particle.PortalParticle; @@ -15,7 +17,7 @@ public class ParticleChangelingMagic extends PortalParticle { public ParticleChangelingMagic(World world, double x, double y, double z, double dx, double dy, double dz) { super(world, x, y, z, dx, dy, dz); - float intensity = rand.nextFloat() * 0.6F + 0.4F; + float intensity = random.nextFloat() * 0.6F + 0.4F; colorRed = intensity * 0.5F; colorGreen = intensity; diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleUnicornMagic.java b/src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleUnicornMagic.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/client/particle/ParticleUnicornMagic.java rename to src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleUnicornMagic.java index e2338411..2f5dd385 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleUnicornMagic.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/particle/ParticleUnicornMagic.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.particle; +package com.minelittlepony.unicopia.core.client.particle; import net.minecraft.client.particle.Particle; diff --git a/src/main/java/com/minelittlepony/unicopia/core/client/particle/RaindropsParticle.java b/src/main/java/com/minelittlepony/unicopia/core/client/particle/RaindropsParticle.java new file mode 100644 index 00000000..65e9cc25 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/client/particle/RaindropsParticle.java @@ -0,0 +1,43 @@ +package com.minelittlepony.unicopia.core.client.particle; + +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleFactory; +import net.minecraft.client.particle.RainSplashParticle; +import net.minecraft.client.particle.SpriteProvider; +import net.minecraft.particle.DefaultParticleType; +import net.minecraft.world.World; + +public class RaindropsParticle extends RainSplashParticle { + + public RaindropsParticle(World world, double x, double y, double z, double dx, double dy, double dz) { + super(world, x, y, z); + velocityY = -0.1; + maxAge += 19; + } + + @Override + public void tick() { + super.tick(); + + if (onGround) { + velocityX *= 0.30000001192092896D; + velocityY = Math.random() * 0.20000000298023224D + 0.10000000149011612D; + velocityZ *= 0.30000001192092896D; + } + } + + public static class Factory implements ParticleFactory { + private final SpriteProvider provider; + + public Factory(SpriteProvider provider) { + this.provider = provider; + } + + @Override + public Particle createParticle(DefaultParticleType defaultParticleType_1, World world, double x, double y, double z, double dx, double dy, double dz) { + RaindropsParticle particle = new RaindropsParticle(world, x, y, z, dx, dy, dz); + particle.setSprite(provider); + return particle; + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleSphere.java b/src/main/java/com/minelittlepony/unicopia/core/client/particle/SphereParticle.java similarity index 58% rename from src/main/java/com/minelittlepony/unicopia/client/particle/ParticleSphere.java rename to src/main/java/com/minelittlepony/unicopia/core/client/particle/SphereParticle.java index c155e617..fd48f7f0 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/ParticleSphere.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/particle/SphereParticle.java @@ -1,25 +1,30 @@ -package com.minelittlepony.unicopia.client.particle; +package com.minelittlepony.unicopia.core.client.particle; import net.minecraft.client.MinecraftClient; import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleFactory; import net.minecraft.client.particle.ParticleTextureSheet; +import net.minecraft.client.particle.SpriteProvider; import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.Camera; import net.minecraft.entity.Entity; +import net.minecraft.particle.DefaultParticleType; import net.minecraft.particle.ParticleEffect; -import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; -import com.minelittlepony.unicopia.client.render.model.SphereModel; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.particles.ParticleConnection.IAttachableParticle; +import com.minelittlepony.unicopia.core.client.render.SphereModel; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.particles.ParticleConnection.IAttachableParticle; import com.mojang.blaze3d.platform.GlStateManager; -public class ParticleSphere extends Particle implements IAttachableParticle { +public class SphereParticle extends Particle implements IAttachableParticle { - protected int tint; + protected float red; + protected float green; + protected float blue; protected float alpha; protected float radius; @@ -28,19 +33,25 @@ public class ParticleSphere extends Particle implements IAttachableParticle { private static final SphereModel model = new SphereModel(); - public ParticleSphere(ParticleEffect type, World w, double x, double y, double z, double vX, double vY, double vZ) { - this(w, x, y, z, args[0] / 1000F, args[1], args[2]/100F); + public SphereParticle(ParticleEffect type, World w, + double x, double y, double z, + float radius, + int red, int green, int blue, float alpha, + double vX, double vY, double vZ) { + this(w, x, y, z, radius, red, green, blue, alpha); this.velocityX = vX; this.velocityY = vY; this.velocityZ = vZ; } - public ParticleSphere(World w, double x, double y, double z, float radius, int tint, float alpha) { + public SphereParticle(World w, double x, double y, double z, float radius, int red, int green, int blue, float alpha) { super(w, x, y, z); this.radius = radius; - this.tint = tint; + this.red = red/255F; + this.green = green/255F; + this.blue = blue/255F; this.alpha = alpha; setMaxAge(10); @@ -57,13 +68,6 @@ public class ParticleSphere extends Particle implements IAttachableParticle { this.caster = caster; } - @Override - public void buildGeometry(BufferBuilder var1, Camera var2, float var3, float var4, float var5, float var6, - float var7, float var8) { - // TODO Auto-generated method stub - - } - @Override public ParticleTextureSheet getType() { // TODO Auto-generated method stub @@ -91,7 +95,8 @@ public class ParticleSphere extends Particle implements IAttachableParticle { } } - public void renderParticle(BufferBuilder buffer, Entity viewer, float partialTicks, float x, float z, float yz, float xy, float xz) { + @Override + public void buildGeometry(BufferBuilder buffer, Camera viewer, float partialTicks, float x, float z, float yz, float xy, float xz) { if (alpha <= 0 || radius <= 0) { return; } @@ -105,7 +110,7 @@ public class ParticleSphere extends Particle implements IAttachableParticle { MinecraftClient.getInstance().gameRenderer.disableLightmap(); GlStateManager.enableLighting(); - Color.glColor(tint, alpha); + GL14.glBlendColor(red, green, blue, alpha); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); GlStateManager.disableTexture(); @@ -129,11 +134,32 @@ public class ParticleSphere extends Particle implements IAttachableParticle { radius = (float)value; } if (key == 1) { - tint = (int)value; + red = (int)value/255F; + } + if (key == 2) { + green = (int)value/255F; } if (key == 3) { + blue = (int)value/255F; + } + if (key == 4) { alpha = (float)value; } } + + public static class Factory implements ParticleFactory { + private final SpriteProvider provider; + + public Factory(SpriteProvider provider) { + this.provider = provider; + } + + @Override + public Particle createParticle(DefaultParticleType defaultParticleType_1, World world, double x, double y, double z, double dx, double dy, double dz) { + RaindropsParticle particle = new RaindropsParticle(world, x, y, z, dx, dy, dz); + particle.setSprite(provider); + return particle; + } + } } diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/model/DiskModel.java b/src/main/java/com/minelittlepony/unicopia/core/client/render/DiskModel.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/client/render/model/DiskModel.java rename to src/main/java/com/minelittlepony/unicopia/core/client/render/DiskModel.java index 481ef7bd..f4f393d7 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/model/DiskModel.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/render/DiskModel.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.model; +package com.minelittlepony.unicopia.core.client.render; public class DiskModel extends SphereModel { diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/model/ModelQuads.java b/src/main/java/com/minelittlepony/unicopia/core/client/render/ModelQuads.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/client/render/model/ModelQuads.java rename to src/main/java/com/minelittlepony/unicopia/core/client/render/ModelQuads.java index 02d41260..f2bfa879 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/model/ModelQuads.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/render/ModelQuads.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.model; +package com.minelittlepony.unicopia.core.client.render; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/model/SphereModel.java b/src/main/java/com/minelittlepony/unicopia/core/client/render/SphereModel.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/client/render/model/SphereModel.java rename to src/main/java/com/minelittlepony/unicopia/core/client/render/SphereModel.java index 4c30cff7..f067a8ce 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/model/SphereModel.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/render/SphereModel.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.model; +package com.minelittlepony.unicopia.core.client.render; import org.lwjgl.opengl.GL11; @@ -6,7 +6,6 @@ import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.util.GlAllocationUtils; - public class SphereModel { private int displayList; @@ -52,7 +51,7 @@ public class SphereModel { glRotate(rotY, 0, 1, 0); glRotate(rotZ, 0, 0, 1); - GlStateManager.scale(scale, scale, scale); + GlStateManager.scalef(scale, scale, scale); GlStateManager.callList(displayList); @@ -60,7 +59,7 @@ public class SphereModel { } private void bake() { - displayList = GlAllocationUtils.generateDisplayLists(1); + displayList = GlAllocationUtils.genLists(1); GlStateManager.newList(displayList, GL11.GL_COMPILE); drawShape(); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/model/TexturedShape2d.java b/src/main/java/com/minelittlepony/unicopia/core/client/render/TexturedShape2d.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/client/render/model/TexturedShape2d.java rename to src/main/java/com/minelittlepony/unicopia/core/client/render/TexturedShape2d.java index bab4da03..d68f6606 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/model/TexturedShape2d.java +++ b/src/main/java/com/minelittlepony/unicopia/core/client/render/TexturedShape2d.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.model; +package com.minelittlepony.unicopia.core.client.render; import net.minecraft.client.model.Quad; import net.minecraft.client.model.Vertex; diff --git a/src/main/java/com/minelittlepony/unicopia/command/Commands.java b/src/main/java/com/minelittlepony/unicopia/core/command/Commands.java similarity index 77% rename from src/main/java/com/minelittlepony/unicopia/command/Commands.java rename to src/main/java/com/minelittlepony/unicopia/core/command/Commands.java index 926befd0..6e181345 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/Commands.java +++ b/src/main/java/com/minelittlepony/unicopia/core/command/Commands.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.core.command; import net.fabricmc.fabric.api.registry.CommandRegistry; @@ -6,7 +6,6 @@ public class Commands { public static void bootstrap() { CommandRegistry.INSTANCE.register(false, SpeciesCommand::register); CommandRegistry.INSTANCE.register(false, RacelistCommand::register); - CommandRegistry.INSTANCE.register(false, DisguiseCommand::register); CommandRegistry.INSTANCE.register(false, GravityCommand::register); // TODO: diff --git a/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java b/src/main/java/com/minelittlepony/unicopia/core/command/GravityCommand.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java rename to src/main/java/com/minelittlepony/unicopia/core/command/GravityCommand.java index ce70359e..9c4b949e 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/GravityCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/core/command/GravityCommand.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.core.command; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.FloatArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; diff --git a/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java b/src/main/java/com/minelittlepony/unicopia/core/command/RaceArgument.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java rename to src/main/java/com/minelittlepony/unicopia/core/command/RaceArgument.java index 9442ee41..da9d8472 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java +++ b/src/main/java/com/minelittlepony/unicopia/core/command/RaceArgument.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.core.command; import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; -import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.core.Race; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java b/src/main/java/com/minelittlepony/unicopia/core/command/RacelistCommand.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java rename to src/main/java/com/minelittlepony/unicopia/core/command/RacelistCommand.java index 92d66efb..eb0e80f3 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/RacelistCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/core/command/RacelistCommand.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.core.command; import java.util.function.BiFunction; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; diff --git a/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java b/src/main/java/com/minelittlepony/unicopia/core/command/SpeciesCommand.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java rename to src/main/java/com/minelittlepony/unicopia/core/command/SpeciesCommand.java index 68aefab9..4c30076d 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/SpeciesCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/core/command/SpeciesCommand.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.core.command; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; diff --git a/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java b/src/main/java/com/minelittlepony/unicopia/core/ducks/IItemEntity.java similarity index 52% rename from src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/ducks/IItemEntity.java index 40d73172..cdf23025 100644 --- a/src/main/java/com/minelittlepony/unicopia/ducks/IItemEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ducks/IItemEntity.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.ducks; +package com.minelittlepony.unicopia.core.ducks; -import com.minelittlepony.unicopia.entity.capabilities.ItemEntityCapabilities; +import com.minelittlepony.unicopia.core.entity.ItemEntityCapabilities; public interface IItemEntity extends IRaceContainerHolder { diff --git a/src/main/java/com/minelittlepony/unicopia/ducks/IRaceContainerHolder.java b/src/main/java/com/minelittlepony/unicopia/core/ducks/IRaceContainerHolder.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/ducks/IRaceContainerHolder.java rename to src/main/java/com/minelittlepony/unicopia/core/ducks/IRaceContainerHolder.java index df25789d..2fd3ff7f 100644 --- a/src/main/java/com/minelittlepony/unicopia/ducks/IRaceContainerHolder.java +++ b/src/main/java/com/minelittlepony/unicopia/core/ducks/IRaceContainerHolder.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.ducks; +package com.minelittlepony.unicopia.core.ducks; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.core.entity.IEntity; +import com.minelittlepony.unicopia.core.magic.ICaster; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IPage.java b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IPage.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IPage.java rename to src/main/java/com/minelittlepony/unicopia/core/enchanting/IPage.java index d5e36329..bbb7476a 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IPage.java +++ b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IPage.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.core.enchanting; import net.minecraft.util.Identifier; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IPageOwner.java similarity index 58% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java rename to src/main/java/com/minelittlepony/unicopia/core/enchanting/IPageOwner.java index eead7efc..5393948c 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageOwner.java +++ b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IPageOwner.java @@ -1,11 +1,10 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.core.enchanting; import java.util.Map; import javax.annotation.Nonnull; -import com.minelittlepony.unicopia.network.ITransmittable; - +import com.minelittlepony.unicopia.core.network.ITransmittable; import net.minecraft.util.Identifier; /** @@ -26,21 +25,6 @@ public interface IPageOwner extends ITransmittable { sendCapabilities(true); } - default boolean hasPageStateRelative(IPage start, PageState state, int direction) { - int pos = start.getIndex(); - - do { - if (getPageState(Pages.instance().getByIndex(pos)) == state) { - return true; - } - - pos += direction; - - } while (pos >= 0 && pos < Pages.instance().getTotalPages()); - - return false; - } - default PageState getPageState(IPage page) { return getPageStates().getOrDefault(page.getName(), page.getDefaultState()); } diff --git a/src/main/java/com/minelittlepony/unicopia/core/enchanting/IUnlockEvent.java b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IUnlockEvent.java new file mode 100644 index 00000000..d818f808 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/enchanting/IUnlockEvent.java @@ -0,0 +1,5 @@ +package com.minelittlepony.unicopia.core.enchanting; + +public interface IUnlockEvent { + +} diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/PageState.java b/src/main/java/com/minelittlepony/unicopia/core/enchanting/PageState.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/enchanting/PageState.java rename to src/main/java/com/minelittlepony/unicopia/core/enchanting/PageState.java index 6f2efa9e..adb686cc 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/PageState.java +++ b/src/main/java/com/minelittlepony/unicopia/core/enchanting/PageState.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.core.enchanting; public enum PageState { LOCKED, diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IFlight.java b/src/main/java/com/minelittlepony/unicopia/core/entity/FlightControl.java similarity index 73% rename from src/main/java/com/minelittlepony/unicopia/entity/IFlight.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/FlightControl.java index f0f29322..06f75484 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IFlight.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/FlightControl.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; /** * Interface for controlling flight. */ -public interface IFlight { +public interface FlightControl { /** * True is we're currently flying. */ @@ -14,5 +14,4 @@ public interface IFlight { float getFlightDuration(); boolean isExperienceCritical(); - } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IEntity.java b/src/main/java/com/minelittlepony/unicopia/core/entity/IEntity.java similarity index 77% rename from src/main/java/com/minelittlepony/unicopia/entity/IEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/IEntity.java index 6996dc3e..7c9ef361 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/IEntity.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; import net.minecraft.entity.projectile.ProjectileEntity; import net.minecraft.item.ItemStack; -public interface IEntity extends InbtSerialisable, IUpdatable { +public interface IEntity extends InbtSerialisable, Updatable { Race getSpecies(); void setSpecies(Race race); @@ -31,7 +31,9 @@ public interface IEntity extends InbtSerialisable, IUpdatable { /** * Called at the beginning of an update cycle. */ - boolean beforeUpdate(); + default boolean beforeUpdate() { + return false; + } /** diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IMagicals.java b/src/main/java/com/minelittlepony/unicopia/core/entity/IMagicals.java similarity index 75% rename from src/main/java/com/minelittlepony/unicopia/entity/IMagicals.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/IMagicals.java index fdf6dc79..9a7ffa8c 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IMagicals.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/IMagicals.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; /** * Any entities with magical abilities. diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IInAnimate.java b/src/main/java/com/minelittlepony/unicopia/core/entity/InAnimate.java similarity index 66% rename from src/main/java/com/minelittlepony/unicopia/entity/IInAnimate.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/InAnimate.java index cd147e60..c79a70a6 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IInAnimate.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/InAnimate.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; -import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.core.Race; /** * This interface is for any entities that are categorised as inanimated, @@ -9,6 +9,6 @@ import com.minelittlepony.unicopia.Race; * These typically can't be interacted with by players unless under certain cirumstances. * */ -public interface IInAnimate { +public interface InAnimate { boolean canInteract(Race race); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/ItemEntityCapabilities.java b/src/main/java/com/minelittlepony/unicopia/core/entity/ItemEntityCapabilities.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/ItemEntityCapabilities.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/ItemEntityCapabilities.java index d98a040f..bbd7a943 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/ItemEntityCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/ItemEntityCapabilities.java @@ -1,16 +1,14 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.core.entity; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.ducks.IItemEntity; -import com.minelittlepony.unicopia.entity.IOwned; -import com.minelittlepony.unicopia.entity.IRaceContainer; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.ducks.IItemEntity; import net.minecraft.entity.ItemEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.ActionResult; -public class ItemEntityCapabilities implements IRaceContainer, IOwned { +public class ItemEntityCapabilities implements RaceContainer, Owned { private Race race = Race.HUMAN; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/LivingEntityCapabilities.java b/src/main/java/com/minelittlepony/unicopia/core/entity/LivingEntityCapabilities.java similarity index 79% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/LivingEntityCapabilities.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/LivingEntityCapabilities.java index 738c900d..ad91575b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/LivingEntityCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/LivingEntityCapabilities.java @@ -1,14 +1,13 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.core.entity; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.IRaceContainer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAffine; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.network.EffectSync; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.IAffine; +import com.minelittlepony.unicopia.core.magic.IAttachedEffect; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.network.EffectSync; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.data.DataTracker; @@ -16,7 +15,7 @@ import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.nbt.CompoundTag; -public class LivingEntityCapabilities implements IRaceContainer, ICaster { +public class LivingEntityCapabilities implements RaceContainer, ICaster { private static final TrackedData EFFECT = DataTracker.registerData(LivingEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); @@ -56,11 +55,6 @@ public class LivingEntityCapabilities implements IRaceContainer, I return effectDelegate.has(); } - @Override - public void beforeUpdate() { - - } - @Override public void onUpdate() { if (hasEffect()) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IOwned.java b/src/main/java/com/minelittlepony/unicopia/core/entity/Owned.java similarity index 68% rename from src/main/java/com/minelittlepony/unicopia/entity/IOwned.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/Owned.java index 8f63258d..0cb65139 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IOwned.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/Owned.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; /** * Interface for things that can be owned. * * @param The type of object that owns us. */ -public interface IOwned { +public interface Owned { /** * Updates the owner of this object. @@ -19,7 +19,7 @@ public interface IOwned { @SuppressWarnings("unchecked") - static IOwned cast(Object o) { - return (IOwned)o; + static Owned cast(Object o) { + return (Owned)o; } } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IRaceContainer.java b/src/main/java/com/minelittlepony/unicopia/core/entity/RaceContainer.java similarity index 53% rename from src/main/java/com/minelittlepony/unicopia/entity/IRaceContainer.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/RaceContainer.java index 9d99faab..6f4f636f 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IRaceContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/RaceContainer.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; import net.minecraft.entity.Entity; @@ -7,6 +7,6 @@ import net.minecraft.entity.Entity; * * @param The type of owner */ -public interface IRaceContainer extends IEntity { +public interface RaceContainer extends IEntity { } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ITrap.java b/src/main/java/com/minelittlepony/unicopia/core/entity/Trap.java similarity index 54% rename from src/main/java/com/minelittlepony/unicopia/entity/ITrap.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/Trap.java index 6e9b387a..f626726e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ITrap.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/Trap.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; import net.minecraft.entity.Entity; -public interface ITrap { +public interface Trap { boolean attemptDismount(Entity passenger); } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IUpdatable.java b/src/main/java/com/minelittlepony/unicopia/core/entity/Updatable.java similarity index 68% rename from src/main/java/com/minelittlepony/unicopia/entity/IUpdatable.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/Updatable.java index bf8b5bcd..1880547e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/IUpdatable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/Updatable.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.core.entity; /** * Interface for objects that receive regular updates. */ @FunctionalInterface -public interface IUpdatable { +public interface Updatable { /** * Called to update the internal logic. */ diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/AbilityDelegate.java b/src/main/java/com/minelittlepony/unicopia/core/entity/player/AbilityDelegate.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/AbilityDelegate.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/player/AbilityDelegate.java index 9282c769..a1e8d588 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/AbilityDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/player/AbilityDelegate.java @@ -1,20 +1,20 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.core.entity.player; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.ability.IAbilityReceiver; -import com.minelittlepony.unicopia.ability.IData; -import com.minelittlepony.unicopia.ability.IPower; -import com.minelittlepony.unicopia.ability.PowersRegistry; -import com.minelittlepony.unicopia.entity.IUpdatable; -import com.minelittlepony.unicopia.network.MsgPlayerAbility; -import com.minelittlepony.util.InbtSerialisable; +import com.minelittlepony.jumpingcastle.api.Target; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.ability.IAbilityReceiver; +import com.minelittlepony.unicopia.core.ability.IPower; +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.entity.Updatable; +import com.minelittlepony.unicopia.core.network.MsgPlayerAbility; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; import net.minecraft.nbt.CompoundTag; -class AbilityDelegate implements IAbilityReceiver, IUpdatable, InbtSerialisable { +class AbilityDelegate implements IAbilityReceiver, Updatable, InbtSerialisable { private final IPlayer player; @@ -156,10 +156,10 @@ class AbilityDelegate implements IAbilityReceiver, IUpdatable, InbtSerialisable * Returns true if the ability suceeded, otherwise false. */ protected boolean activateAbility(@Nonnull IPower ability) { - IData data = ability.tryActivate(player); + IPower.IData data = ability.tryActivate(player); if (data != null) { - Unicopia.getConnection().send(new MsgPlayerAbility(player.getOwner(), ability, data), Target.SERVER); + UnicopiaCore.getConnection().send(new MsgPlayerAbility(player.getOwner(), ability, data), Target.SERVER); } return data != null; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/GravityDelegate.java b/src/main/java/com/minelittlepony/unicopia/core/entity/player/GravityDelegate.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/GravityDelegate.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/player/GravityDelegate.java index d7cc873c..5b89824b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/GravityDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/player/GravityDelegate.java @@ -1,29 +1,22 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.core.entity.player; import java.util.Random; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.unicopia.ability.IFlyingPredicate; -import com.minelittlepony.unicopia.ability.IHeightPredicate; -import com.minelittlepony.unicopia.entity.IFlight; -import com.minelittlepony.unicopia.entity.IGravity; -import com.minelittlepony.unicopia.entity.IUpdatable; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.mixin.MixinEntity; -import com.minelittlepony.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.USounds; +import com.minelittlepony.unicopia.core.ability.IFlyingPredicate; +import com.minelittlepony.unicopia.core.ability.IHeightPredicate; +import com.minelittlepony.unicopia.core.entity.FlightControl; +import com.minelittlepony.unicopia.core.entity.Updatable; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.mixin.MixinEntity; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.util.MutableVector; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Material; import net.minecraft.entity.Entity; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.nbt.CompoundTag; -import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; @@ -31,7 +24,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable, IFlyingPredicate, IHeightPredicate { +public class GravityDelegate implements Updatable, FlightControl, InbtSerialisable, IFlyingPredicate, IHeightPredicate { private final IPlayer player; @@ -112,12 +105,10 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable return player.getOwner().getHeight(); } - @Override public void setGraviationConstant(float constant) { gravity = constant; } - @Override public float getGravitationConstant() { return gravity; } @@ -131,7 +122,7 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable public void onUpdate() { PlayerEntity entity = player.getOwner(); - Vec3d velocity = entity.getVelocity(); + MutableVector velocity = new MutableVector(entity.getVelocity()); if (isExperienceCritical() && player.isClient()) { Random rnd = player.getWorld().random; @@ -143,7 +134,7 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable rnd.nextGaussian() * entity.getWidth() ); - ParticleTypeRegistry.getTnstance().getSpawner().spawnParticle(entity.world, UParticles.UNICORN_MAGIC, pos, velocity); + player.addParticle(UParticles.UNICORN_MAGIC, pos, velocity.toImmutable()); } } @@ -185,11 +176,12 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable ((MixinEntity)entity).setSize(entity.getWidth(), bodyHeight); - entity.eyeHeight = eyeHeight; + // TODO: Change eye height + //entity.eyeHeight = eyeHeight; if (gravity < 0) { if (entity.isSneaking()) { - entity.eyeHeight += 0.2F; + //entity.eyeHeight += 0.2F; } } @@ -274,14 +266,14 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable lastTickPosX = entity.x; lastTickPosZ = entity.z; - entity.setVelocity(velocity); + entity.setVelocity(velocity.toImmutable()); } public SoundEvent getWingSound() { return player.getSpecies() == Race.CHANGELING ? USounds.CHANGELING_BUZZ : USounds.WING_FLAP; } - protected void moveFlying(Entity player, Vec3d velocity) { + protected void moveFlying(Entity player, MutableVector velocity) { float forward = 0.000015F * flightExperience * (float)Math.sqrt(getHorizontalMotion(player)); int factor = gravity < 0 ? -1 : 1; @@ -319,7 +311,7 @@ class GravityDelegate implements IUpdatable, IGravity, IFlight, InbtSerialisable } if (forward >= 1) { - player.world.playSound(null, player.getPos(), USounds.WIND_RUSH, SoundCategory.AMBIENT, 3, 1); + player.world.playSound(null, player.getBlockPos(), USounds.WIND_RUSH, SoundCategory.AMBIENT, 3, 1); } if (forward > 4) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/IPlayer.java b/src/main/java/com/minelittlepony/unicopia/core/entity/player/IPlayer.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/IPlayer.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/player/IPlayer.java index f852ef78..bc53ed0d 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/IPlayer.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/player/IPlayer.java @@ -1,27 +1,20 @@ -package com.minelittlepony.unicopia.entity.capabilities; - -import java.util.UUID; +package com.minelittlepony.unicopia.core.entity.player; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.ability.IAbilityReceiver; -import com.minelittlepony.unicopia.enchanting.IPageOwner; -import com.minelittlepony.unicopia.entity.IFlight; -import com.minelittlepony.unicopia.entity.IFood; -import com.minelittlepony.unicopia.entity.IGravity; -import com.minelittlepony.unicopia.entity.IInventory; -import com.minelittlepony.unicopia.entity.IRaceContainer; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; -import com.minelittlepony.unicopia.network.ITransmittable; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.ability.IAbilityReceiver; +import com.minelittlepony.unicopia.core.entity.FlightControl; +import com.minelittlepony.unicopia.core.entity.RaceContainer; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IHeldEffect; +import com.minelittlepony.unicopia.core.network.ITransmittable; +import com.minelittlepony.util.IInterpolator; import com.mojang.authlib.GameProfile; import com.mojang.datafixers.util.Either; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; import net.minecraft.util.Unit; import net.minecraft.util.math.BlockPos; @@ -30,7 +23,7 @@ import net.minecraft.util.math.BlockPos; * * This is the core of unicopia. */ -public interface IPlayer extends ICaster, IRaceContainer, ITransmittable, IPageOwner { +public interface IPlayer extends ICaster, RaceContainer, ITransmittable { /** * Gets the player's magical abilities delegate responsible for all spell casting and persisting/updating. @@ -40,22 +33,22 @@ public interface IPlayer extends ICaster, IRaceContainer PLAYER_RACE = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.INTEGER); private static final TrackedData ENERGY = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.FLOAT); @@ -63,7 +57,7 @@ public class PlayerCapabilities implements IPlayer { private static final TrackedData EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); private static final TrackedData HELD_EFFECT = DataTracker.registerData(PlayerEntity.class, TrackedDataHandlerRegistry.TAG_COMPOUND); - private final Map pageStates = new HashMap<>(); + private final PlayerPageStats pageStates = new PlayerPageStats(); private final AbilityDelegate powers = new AbilityDelegate(this); @@ -181,9 +175,9 @@ public class PlayerCapabilities implements IPlayer { if (!getWorld().isClient()) { if (full) { - Unicopia.getConnection().broadcast(new MsgPlayerCapabilities(this)); + UnicopiaCore.getConnection().broadcast(new MsgPlayerCapabilities(this)); } else { - Unicopia.getConnection().broadcast(new MsgPlayerCapabilities(getSpecies(), getOwner())); + UnicopiaCore.getConnection().broadcast(new MsgPlayerCapabilities(getSpecies(), getOwner())); } } } @@ -201,17 +195,17 @@ public class PlayerCapabilities implements IPlayer { } @Override - public IGravity getGravity() { + public GravityDelegate getGravity() { return gravity; } @Override - public IFlight getFlight() { + public FlightControl getFlight() { return gravity; } @Override - public ICamera getCamera() { + public PlayerCamera getCamera() { return view; } @@ -221,14 +215,14 @@ public class PlayerCapabilities implements IPlayer { } @Override - public void beforeUpdate() { + public boolean beforeUpdate() { if (entity.world.isClient()) { if (entity.hasVehicle() && entity.isSneaking()) { Entity ridee = entity.getVehicle(); - if (ridee instanceof ITrap) { - if (((ITrap)ridee).attemptDismount(entity)) { + if (ridee instanceof Trap) { + if (((Trap)ridee).attemptDismount(entity)) { entity.stopRiding(); } else { entity.setSneaking(false); @@ -245,6 +239,8 @@ public class PlayerCapabilities implements IPlayer { powers.onUpdate(); inventory.onUpdate(); + + return false; } @Override @@ -270,7 +266,7 @@ public class PlayerCapabilities implements IPlayer { IHeldEffect effect = getHeldEffect(stack); if (effect != null) { - Affinity affinity = stack.getItem() instanceof ICastable ? ((ICastable)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; + Affinity affinity = stack.getItem() instanceof IMagicalItem ? ((IMagicalItem)stack.getItem()).getAffinity(stack) : Affinity.NEUTRAL; effect.updateInHand(this, affinity); } @@ -297,8 +293,7 @@ public class PlayerCapabilities implements IPlayer { public void onJump() { if (gravity.getGravitationConstant() < 0) { Vec3d velocity = entity.getVelocity(); - velocity.y *= -1; - entity.setVelocity(velocity); + entity.setVelocity(velocity.x, velocity.y * -1, velocity.z); } } @@ -306,10 +301,8 @@ public class PlayerCapabilities implements IPlayer { public boolean onProjectileImpact(ProjectileEntity projectile) { if (hasEffect()) { IMagicEffect effect = getEffect(); - if (effect instanceof SpellDisguise && !effect.isDead()) { - if (((SpellDisguise)effect).getDisguise() == projectile) { - return true; - } + if (!effect.isDead() && effect.handleProjectileImpact(projectile)) { + return true; } } @@ -347,14 +340,14 @@ public class PlayerCapabilities implements IPlayer { @Override public Either trySleep(BlockPos pos) { - if (getInventory().isWearing(UItems.alicorn_amulet)) { + if (getInventory().matches(UTags.CURSED_ARTEFACTS)) { if (!isClient()) { entity.addChatMessage(new TranslatableText("tile.bed.youAreAMonster"), true); } return Either.left(SleepFailureReason.OTHER_PROBLEM); } - if (findAllSpellsInRange(10).anyMatch(c -> c instanceof IPlayer && ((IPlayer)c).getInventory().isWearing(UItems.alicorn_amulet))) { + if (findAllSpellsInRange(10).anyMatch(c -> c instanceof IPlayer && ((IPlayer)c).getInventory().matches(UTags.CURSED_ARTEFACTS))) { return Either.left(SleepFailureReason.NOT_SAFE); } @@ -362,7 +355,7 @@ public class PlayerCapabilities implements IPlayer { } @Override - public IInventory getInventory() { + public PlayerInventory getInventory() { return inventory; } @@ -379,16 +372,16 @@ public class PlayerCapabilities implements IPlayer { player.getHungerManager().add(-health/2, -saturation/2); - player.addStatusEffectInstance(new StatusEffectInstance(StatusEffects.NAUSEA, 100, 3, true, true)); + player.addPotionEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 100, 3, true, true)); } else { - player.addStatusEffectInstance(new StatusEffectInstance(StatusEffects.NAUSEA, 200, 3, true, true)); + player.addPotionEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 200, 3, true, true)); } if (player.world.getDifficulty() != Difficulty.PEACEFUL && player.world.random.nextInt(20) == 0) { - player.addStatusEffectInstance(new StatusEffectInstance(UEffects.FOOD_POISONING, 3, 2, true, true)); + player.addPotionEffect(new StatusEffectInstance(UEffects.FOOD_POISONING, 3, 2, true, true)); } - player.addStatusEffectInstance(new StatusEffectInstance(StatusEffects.WEAKNESS, 2000, 2, true, true)); + player.addPotionEffect(new StatusEffectInstance(StatusEffects.WEAKNESS, 2000, 2, true, true)); } } @@ -405,21 +398,7 @@ public class PlayerCapabilities implements IPlayer { compound.put("effect", SpellRegistry.instance().serializeEffectToNBT(effect)); } - if (!pageStates.isEmpty()) { - CompoundTag pages = new CompoundTag(); - boolean written = false; - - for (Map.Entry entry : pageStates.entrySet()) { - if (entry.getValue() != PageState.LOCKED) { - pages.putString(entry.getKey().toString(), entry.getValue().name()); - written = true; - } - } - - if (written) { - compound.put("pageStates", pages); - } - } + pageStates.toNBT(compound); } @Override @@ -433,18 +412,7 @@ public class PlayerCapabilities implements IPlayer { setEffect(SpellRegistry.instance().createEffectFromNBT(compound.getCompound("effect"))); } - pageStates.clear(); - if (compound.containsKey("pageStates")) { - CompoundTag pages = compound.getCompound("pageStates"); - - pages.getKeys().forEach(key -> { - PageState state = PageState.of(pages.getString(key)); - - if (state != PageState.LOCKED) { - pageStates.put(new Identifier(key), state); - } - }); - } + pageStates.fromNBT(compound); } @Override @@ -473,7 +441,6 @@ public class PlayerCapabilities implements IPlayer { @Override public void setOwner(PlayerEntity owner) { - entity = owner; } @Override @@ -492,6 +459,7 @@ public class PlayerCapabilities implements IPlayer { @Override public Map getPageStates() { - return pageStates; + return pageStates.getPageStates(); } + } diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/PlayerInventory.java b/src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerInventory.java similarity index 75% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/PlayerInventory.java rename to src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerInventory.java index 89107ea0..d14703c7 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/PlayerInventory.java +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerInventory.java @@ -1,23 +1,23 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.core.entity.player; import java.util.Iterator; import java.util.Map; import com.google.common.collect.Maps; -import com.minelittlepony.unicopia.entity.IInventory; -import com.minelittlepony.unicopia.entity.IUpdatable; -import com.minelittlepony.unicopia.magic.items.IDependable; -import com.minelittlepony.unicopia.magic.items.IMagicalItem; -import com.minelittlepony.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.entity.Updatable; +import com.minelittlepony.unicopia.core.magic.IDependable; +import com.minelittlepony.unicopia.core.magic.IMagicalItem; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.tag.Tag; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; -public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable { +public class PlayerInventory implements Updatable, InbtSerialisable { private final Map dependencies = Maps.newHashMap(); private final IPlayer player; @@ -26,7 +26,12 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable this.player = player; } - @Override + /** + * Reinforces a players dependency on a certain magical artifact. + * A dependency will slowly drop over time if not reinforced + * + * Bad things might happen when it's removed. + */ public synchronized void enforceDependency(IDependable item) { if (dependencies.containsKey(item)) { dependencies.get(item).reinforce(); @@ -35,7 +40,9 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable } } - @Override + /** + * Returns how long the player has been wearing the given item. + */ public synchronized int getTicksAttached(IDependable item) { if (dependencies.containsKey(item)) { return dependencies.get(item).ticksAttached; @@ -44,7 +51,11 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable return 0; } - @Override + /** + * Returns how dependent the player has become on the given item. + * + * Zero means not dependent at all / not wearing. + */ public synchronized float getNeedfulness(IDependable item) { if (dependencies.containsKey(item)) { return dependencies.get(item).needfulness; @@ -71,7 +82,9 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable } } - @Override + /** + * Checks if the player is wearing the specified magical artifact. + */ public boolean isWearing(IMagicalItem item) { for (ItemStack i : player.getOwner().getArmorItems()) { if (!i.isEmpty() && i.getItem() == item) { @@ -82,6 +95,16 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable return item instanceof Item; } + public boolean matches(Tag tag) { + for (ItemStack i : player.getOwner().getArmorItems()) { + if (!i.isEmpty() && i.getItem().isIn(tag)) { + return true; + } + } + + return false; + } + @Override public void toNBT(CompoundTag compound) { ListTag items = new ListTag(); @@ -108,7 +131,7 @@ public class PlayerInventory implements IInventory, IUpdatable, InbtSerialisable }); } - class Entry implements IUpdatable, InbtSerialisable { + class Entry implements Updatable, InbtSerialisable { int ticksAttached = 0; float needfulness = 1; diff --git a/src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerPageStats.java b/src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerPageStats.java new file mode 100644 index 00000000..b73dbb90 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/entity/player/PlayerPageStats.java @@ -0,0 +1,62 @@ +package com.minelittlepony.unicopia.core.entity.player; + +import java.util.HashMap; +import java.util.Map; + +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.PageState; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Identifier; + +public class PlayerPageStats implements InbtSerialisable, IPageOwner { + private final Map pageStates = new HashMap<>(); + + @Override + public Map getPageStates() { + return pageStates; + } + + @Override + public void sendCapabilities(boolean full) { + + } + + + @Override + public void toNBT(CompoundTag compound) { + if (!pageStates.isEmpty()) { + CompoundTag pages = new CompoundTag(); + boolean written = false; + + for (Map.Entry entry : pageStates.entrySet()) { + if (entry.getValue() != PageState.LOCKED) { + pages.putString(entry.getKey().toString(), entry.getValue().name()); + written = true; + } + } + + if (written) { + compound.put("pageStates", pages); + } + } + } + + @Override + public void fromNBT(CompoundTag compound) { + pageStates.clear(); + if (compound.containsKey("pageStates")) { + CompoundTag pages = compound.getCompound("pageStates"); + + pages.getKeys().forEach(key -> { + PageState state = PageState.of(pages.getString(key)); + + if (state != PageState.LOCKED) { + pageStates.put(new Identifier(key), state); + } + }); + } + } + +} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractSpell.java b/src/main/java/com/minelittlepony/unicopia/core/magic/AbstractSpell.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractSpell.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/AbstractSpell.java index ff2ee327..8b364ed1 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/AbstractSpell.java @@ -1,7 +1,4 @@ -package com.minelittlepony.unicopia.magic.spells; - -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +package com.minelittlepony.unicopia.core.magic; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/Affinity.java b/src/main/java/com/minelittlepony/unicopia/core/magic/Affinity.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/magic/Affinity.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/Affinity.java index b803f86d..9c9fd9ae 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/Affinity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/Affinity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/CastResult.java b/src/main/java/com/minelittlepony/unicopia/core/magic/CastResult.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/CastResult.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/CastResult.java index 6d077c56..dba91598 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/CastResult.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/CastResult.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic; /** * A type of action to perform after a spell has completed its handling. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java b/src/main/java/com/minelittlepony/unicopia/core/magic/CasterUtils.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/CasterUtils.java index a30d4caf..ee821e5b 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/CasterUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/CasterUtils.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; import java.util.Optional; import java.util.stream.Stream; @@ -6,11 +6,11 @@ import java.util.stream.Stream; import javax.annotation.Nullable; import com.google.common.collect.Streams; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ducks.IRaceContainerHolder; -import com.minelittlepony.unicopia.entity.IMagicals; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.ducks.IRaceContainerHolder; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/GenericSpell.java b/src/main/java/com/minelittlepony/unicopia/core/magic/GenericSpell.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/GenericSpell.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/GenericSpell.java index 94c59e28..ceb4a807 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/GenericSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/GenericSpell.java @@ -1,11 +1,7 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic; import java.util.function.Supplier; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; - public class GenericSpell extends AbstractSpell { private final String name; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IAffine.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IAffine.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/magic/IAffine.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IAffine.java index 7b04fd22..b6f7657f 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IAffine.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IAffine.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; /** * Interface for things that have an affine alignment. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IAttachedEffect.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IAttachedEffect.java index 35f1b1b9..cebe3852 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IAttachedEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IAttachedEffect.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; public interface IAttachedEffect extends IMagicEffect { /** diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ICaster.java b/src/main/java/com/minelittlepony/unicopia/core/magic/ICaster.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/ICaster.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/ICaster.java index 827f9839..bbca820a 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ICaster.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/ICaster.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; import java.util.Optional; import java.util.UUID; @@ -6,8 +6,9 @@ import java.util.stream.Stream; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.IOwned; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.entity.Owned; +import com.minelittlepony.unicopia.core.util.VecHelper; + import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; @@ -19,7 +20,7 @@ import net.minecraft.world.World; /** * Interface for any magically capable entities that can cast and persist spells. */ -public interface ICaster extends IOwned, ILevelled, IAffine, IMagicals, IParticleSource { +public interface ICaster extends Owned, ILevelled, IAffine, IMagicals, IParticleSource { void setEffect(@Nullable IMagicEffect effect); diff --git a/src/main/java/com/minelittlepony/unicopia/core/magic/IDependable.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IDependable.java new file mode 100644 index 00000000..cbcd8b1b --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IDependable.java @@ -0,0 +1,7 @@ +package com.minelittlepony.unicopia.core.magic; + +import com.minelittlepony.unicopia.core.entity.player.IPlayer; + +public interface IDependable extends IMagicalItem { + void onRemoved(IPlayer player, float needfulness); +} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IDispenceable.java similarity index 71% rename from src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IDispenceable.java index 5137fbb2..8f91f473 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IDispenceable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IDispenceable.java @@ -1,10 +1,8 @@ -package com.minelittlepony.unicopia.magic; - -import com.minelittlepony.unicopia.magic.spells.CastResult; +package com.minelittlepony.unicopia.core.magic; +import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Position; /** * Represents an object with an action to perform when dispensed from a dispenser. @@ -20,5 +18,5 @@ public interface IDispenceable extends IMagicEffect { * @param affinity The affinity of the casting artifact * @return an ActionResult for the type of action to perform. */ - CastResult onDispenced(BlockPos pos, Direction facing, Position source, Affinity affinity); + CastResult onDispenced(BlockPos pos, Direction facing, BlockPointer source, Affinity affinity); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/items/IDispensable.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IDispensable.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/magic/items/IDispensable.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IDispensable.java index 33e833f5..303af4cb 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/items/IDispensable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IDispensable.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic.items; +package com.minelittlepony.unicopia.core.magic; import net.minecraft.block.Block; import net.minecraft.block.DispenserBlock; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IHeldEffect.java similarity index 76% rename from src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IHeldEffect.java index 2d4d3f59..8bfee71d 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IHeldEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IHeldEffect.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; /** * Represents a passive spell that does something when held in the player's hand. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java b/src/main/java/com/minelittlepony/unicopia/core/magic/ILevelled.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/ILevelled.java index 19ae0586..cd01d5b6 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ILevelled.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/ILevelled.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; /** * Object with levelling capabilities. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicEffect.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IMagicEffect.java index 69bbd126..66ebc396 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IMagicEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicEffect.java @@ -1,7 +1,9 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; + +import net.minecraft.entity.projectile.ProjectileEntity; /** * Interface for a magic spells @@ -63,6 +65,10 @@ public interface IMagicEffect extends InbtSerialisable, IAffine { } + default boolean handleProjectileImpact(ProjectileEntity projectile) { + return false; + } + /** * Called every tick when attached to an entity. * Called on both sides. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/items/IMagicalItem.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicalItem.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/magic/items/IMagicalItem.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IMagicalItem.java index a46039ce..a211448e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/items/IMagicalItem.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicalItem.java @@ -1,7 +1,4 @@ -package com.minelittlepony.unicopia.magic.items; - -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAffine; +package com.minelittlepony.unicopia.core.magic; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicals.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicals.java new file mode 100644 index 00000000..9e1b442f --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IMagicals.java @@ -0,0 +1,5 @@ +package com.minelittlepony.unicopia.core.magic; + +public interface IMagicals { + +} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IParticleSource.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IParticleSource.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/magic/IParticleSource.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IParticleSource.java index ce652f9a..cc45fd83 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IParticleSource.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IParticleSource.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; import java.util.function.Consumer; -import com.minelittlepony.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.IShape; import net.minecraft.particle.ParticleEffect; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java b/src/main/java/com/minelittlepony/unicopia/core/magic/ISuppressable.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/ISuppressable.java index 12f57da7..6a9b858e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ISuppressable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/ISuppressable.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; /** * Magic effects that can be suppressed by other nearby effects. diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IUseable.java b/src/main/java/com/minelittlepony/unicopia/core/magic/IUseable.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/magic/IUseable.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/IUseable.java index a6f27afb..3bd0d4ed 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/IUseable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/IUseable.java @@ -1,9 +1,7 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.core.magic; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.spells.CastResult; - import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/AttractiveSpell.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/AttractiveSpell.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/AttractiveSpell.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/AttractiveSpell.java index 85abdd44..180fe932 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/AttractiveSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/AttractiveSpell.java @@ -1,18 +1,18 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class AttractiveSpell extends SpellShield { +public class AttractiveSpell extends ShieldSpell { @Override public String getName() { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFire.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/FireSpell.java similarity index 59% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFire.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/FireSpell.java index 0aa90048..b788b7c7 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFire.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/FireSpell.java @@ -1,73 +1,69 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.entity.IMagicals; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.VecHelper; -import com.minelittlepony.util.collection.IStateMapping; -import com.minelittlepony.util.collection.StateMapList; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IUseable; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.core.util.collection.IStateMapping; +import com.minelittlepony.unicopia.core.util.collection.StateMapList; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.block.Block; -import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockDirt; -import net.minecraft.block.BlockFarmland; -import net.minecraft.block.BlockLeaves; -import net.minecraft.block.BlockRedstoneWire; -import net.minecraft.block.BlockSilverfish; -import net.minecraft.block.BlockStoneBrick; -import net.minecraft.block.BlockWall; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockState; -import net.minecraft.dispenser.IBlockSource; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.FarmlandBlock; +import net.minecraft.block.Material; +import net.minecraft.block.PlantBlock; +import net.minecraft.block.RedstoneWireBlock; import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUsageContext; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.tag.BlockTags; +import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.EnumParticleTypes; -import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { +public class FireSpell extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { public final StateMapList affected = new StateMapList(); private static final IShape visual_effect_region = new Sphere(false, 0.5); private static final IShape effect_range = new Sphere(false, 4); - public SpellFire() { - affected.removeBlock(s -> s.getBlock() == Blocks.SNOW_LAYER || s.getBlock() == Blocks.SNOW); - affected.removeBlock(s -> s.getBlock() instanceof BlockBush); - - affected.replaceBlock(Blocks.CLAY, Blocks.HARDENED_CLAY); + public FireSpell() { + affected.removeBlock(s -> s.getBlock() == Blocks.SNOW || s.getBlock() == Blocks.SNOW_BLOCK); + affected.removeBlock(s -> s.getBlock() instanceof PlantBlock); + affected.replaceBlock(Blocks.CLAY, Blocks.BROWN_CONCRETE); affected.replaceBlock(Blocks.OBSIDIAN, Blocks.LAVA); affected.replaceBlock(Blocks.GRASS, Blocks.DIRT); affected.replaceBlock(Blocks.MOSSY_COBBLESTONE, Blocks.COBBLESTONE); - - affected.replaceProperty(Blocks.COBBLESTONE_WALL, BlockWall.VARIANT, BlockWall.EnumType.MOSSY, BlockWall.EnumType.NORMAL); - affected.replaceProperty(Blocks.STONEBRICK, BlockStoneBrick.VARIANT, BlockStoneBrick.EnumType.MOSSY, BlockStoneBrick.EnumType.DEFAULT); - affected.replaceProperty(Blocks.MONSTER_EGG, BlockSilverfish.VARIANT, BlockSilverfish.EnumType.MOSSY_STONEBRICK, BlockSilverfish.EnumType.STONEBRICK); - affected.replaceProperty(Blocks.DIRT, BlockDirt.VARIANT, BlockDirt.DirtType.PODZOL, BlockDirt.DirtType.COARSE_DIRT); - - affected.setProperty(Blocks.FARMLAND, BlockFarmland.MOISTURE, 0); - + affected.replaceBlock(Blocks.MOSSY_COBBLESTONE_WALL, Blocks.COBBLESTONE_WALL); + affected.replaceBlock(Blocks.MOSSY_STONE_BRICKS, Blocks.STONE_BRICKS); + affected.replaceBlock(Blocks.INFESTED_MOSSY_STONE_BRICKS, Blocks.INFESTED_STONE_BRICKS); + affected.replaceBlock(Blocks.PODZOL, Blocks.COARSE_DIRT); + affected.setProperty(Blocks.FARMLAND, FarmlandBlock.MOISTURE, 0); affected.add(IStateMapping.build( - s -> s.getBlock() == Blocks.DIRT && s.getValue(BlockDirt.VARIANT) == BlockDirt.DirtType.DIRT, - s -> (Math.random() <= 0.15 ? s.with(BlockDirt.VARIANT, BlockDirt.DirtType.COARSE_DIRT) : s))); + s -> s.getBlock() == Blocks.DIRT, + s -> (Math.random() <= 0.15 ? Blocks.COARSE_DIRT.getDefaultState() : s))); } @Override @@ -93,25 +89,29 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable @Override public void render(ICaster source) { source.spawnParticles(visual_effect_region, source.getCurrentLevel() * 6, pos -> { - source.getWorld().spawnParticle(EnumParticleTypes.SMOKE_LARGE, pos.x, pos.y, pos.z, 0, 0, 0); + source.addParticle(ParticleTypes.LARGE_SMOKE, pos, Vec3d.ZERO); }); } + @Override - public CastResult onUse(ItemStack stack, Affinity affinity, PlayerEntity player, World world, BlockPos pos, Direction side, float hitX, float hitY, float hitZ) { + public CastResult onUse(ItemUsageContext context, Affinity affinity) { boolean result = false; + PlayerEntity player = context.getPlayer(); + BlockPos pos = context.getBlockPos(); + if (player == null || player.isSneaking()) { - result = applyBlocks(world, pos); + result = applyBlocks(context.getWorld(), pos); } else { for (BlockPos i : PosHelper.getAllInRegionMutable(pos, effect_range)) { - result |= applyBlocks(world, i); + result |= applyBlocks(context.getWorld(), i); } } if (!result) { - result = applyEntities(player, world, pos); + result = applyEntities(player, context.getWorld(), pos); } return result ? CastResult.DEFAULT : CastResult.NONE; @@ -127,7 +127,7 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable } @Override - public CastResult onDispenced(BlockPos pos, Direction facing, IBlockSource source, Affinity affinity) { + public CastResult onDispenced(BlockPos pos, Direction facing, BlockPointer source, Affinity affinity) { pos = pos.offset(facing, 4); boolean result = false; @@ -149,33 +149,33 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable if (id != Blocks.AIR) { if (id == Blocks.ICE || id == Blocks.PACKED_ICE) { - world.setBlockState(pos, (world.provider.doesWaterVaporize() ? Blocks.AIR : Blocks.WATER).getDefaultState()); + world.setBlockState(pos, (world.dimension.doesWaterVaporize() ? Blocks.AIR : Blocks.WATER).getDefaultState()); playEffect(world, pos); return true; } else if (id == Blocks.NETHERRACK) { if (world.getBlockState(pos.up()).getMaterial() == Material.AIR) { - if (world.rand.nextInt(300) == 0) { + if (world.random.nextInt(300) == 0) { world.setBlockState(pos.up(), Blocks.FIRE.getDefaultState()); } return true; } } else if (id == Blocks.REDSTONE_WIRE) { - int power = world.rand.nextInt(5) == 3 ? 15 : 3; + int power = world.random.nextInt(5) == 3 ? 15 : 3; sendPower(world, pos, power, 3, 0); return true; - } else if (id == Blocks.SAND && world.rand.nextInt(10) == 0) { + } else if (state.matches(BlockTags.SAND) && world.random.nextInt(10) == 0) { if (isSurroundedBySand(world, pos)) { world.setBlockState(pos, Blocks.GLASS.getDefaultState()); playEffect(world, pos); return true; } - } else if (id instanceof BlockLeaves) { + } else if (state.matches(BlockTags.LEAVES)) { if (world.getBlockState(pos.up()).getMaterial() == Material.AIR) { world.setBlockState(pos.up(), Blocks.FIRE.getDefaultState()); @@ -206,11 +206,11 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable protected boolean applyEntitySingle(Entity owner, World world, Entity e) { if ((!e.equals(owner) || - (owner instanceof PlayerEntity && !EquinePredicates.MAGI.test(owner))) && !(e instanceof EntityItem) + (owner instanceof PlayerEntity && !EquinePredicates.MAGI.test(owner))) && !(e instanceof ItemEntity) && !(e instanceof IMagicals)) { - e.setFire(60); - e.attackEntityFrom(getDamageCause(e, (LivingEntity)owner), 0.1f); - playEffect(world, e.getPosition()); + e.setOnFireFor(60); + e.damage(getDamageCause(e, (LivingEntity)owner), 0.1f); + playEffect(world, e.getBlockPos()); return true; } @@ -231,7 +231,7 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable if (i < max && id == Blocks.REDSTONE_WIRE) { i++; - w.setBlockState(pos, state.with(BlockRedstoneWire.POWER, power)); + w.setBlockState(pos, state.with(RedstoneWireBlock.POWER, power)); sendPower(w, pos.up(), power, max, i); sendPower(w, pos.down(), power, max, i); @@ -247,10 +247,10 @@ public class SpellFire extends AbstractSpell.RangedAreaSpell implements IUseable int y = pos.getY(); int z = pos.getZ(); - world.playSound((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), SoundEvents.BLOCK_FURNACE_FIRE_CRACKLE, SoundCategory.AMBIENT, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F, true); + world.playSound(x + 0.5F, y + 0.5F, z + 0.5F, SoundEvents.BLOCK_FURNACE_FIRE_CRACKLE, SoundCategory.AMBIENT, 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F, true); for (int i = 0; i < 8; ++i) { - world.spawnParticle(EnumParticleTypes.SMOKE_LARGE, (double)x + Math.random(), (double)y + Math.random(), (double)z + Math.random(), 0.0D, 0.0D, 0.0D); + world.addParticle(ParticleTypes.LARGE_SMOKE, x + Math.random(), y + Math.random(), z + Math.random(), 0, 0, 0); } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellNecromancy.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/NecromancySpell.java similarity index 78% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellNecromancy.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/NecromancySpell.java index 11b92057..f85d916f 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellNecromancy.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/NecromancySpell.java @@ -1,31 +1,26 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; import java.util.List; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.VecHelper; -import com.minelittlepony.util.WorldEvent; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.core.util.WorldEvent; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.entity.EntityType; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.mob.HuskEntity; -import net.minecraft.entity.mob.MobEntity; -import net.minecraft.entity.mob.MobEntityWithAi; import net.minecraft.entity.mob.ZombieEntity; -import net.minecraft.entity.mob.ZombiePigmanEntity; -import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.particle.ParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.Difficulty; -import net.minecraft.world.World; -public class SpellNecromancy extends AbstractSpell.RangedAreaSpell { +public class NecromancySpell extends AbstractSpell.RangedAreaSpell { private final List> spawns = Lists.newArrayList( EntityType.ZOMBIE, @@ -108,7 +103,7 @@ public class SpellNecromancy extends AbstractSpell.RangedAreaSpell { source.spawnParticles(affectRegion, 5, pos -> { if (!source.getWorld().isAir(new BlockPos(pos).down())) { - source.getWorld().spawnParticle(ParticleTypes.FLAME., pos.x, pos.y, pos.z, 0, 0, 0); + source.getWorld().addParticle(ParticleTypes.FLAME, pos.x, pos.y, pos.z, 0, 0, 0); } }); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellShield.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/ShieldSpell.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellShield.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/ShieldSpell.java index 52b0d2b5..a780db7b 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellShield.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/ShieldSpell.java @@ -1,18 +1,19 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; import java.util.List; import java.util.stream.Collectors; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.particles.ParticleConnection; -import com.minelittlepony.unicopia.projectile.ProjectileUtil; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.IAttachedEffect; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.particles.ParticleConnection; +import com.minelittlepony.unicopia.core.util.projectile.ProjectileUtil; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -20,7 +21,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.Vec3d; -public class SpellShield extends AbstractSpell.RangedAreaSpell implements IAttachedEffect { +public class ShieldSpell extends AbstractSpell.RangedAreaSpell implements IAttachedEffect { private final ParticleConnection particlEffect = new ParticleConnection(); @@ -49,11 +50,14 @@ public class SpellShield extends AbstractSpell.RangedAreaSpell implements IAttac float radius = 4 + (source.getCurrentLevel() * 2); source.spawnParticles(new Sphere(true, radius), (int)(radius * 6), pos -> { - ParticleTypeRegistry.getTnstance().spawnParticle(UParticles.UNICORN_MAGIC, false, pos, 0, 0, 0, getTint()); + source.addParticle(UParticles.UNICORN_MAGIC, pos, Vec3d.ZERO); // getTint() }); particlEffect - .ifMissing(source, () -> ParticleTypeRegistry.getTnstance().spawnParticle(UParticles.SPHERE, true, source.getOriginVector(), 0, 0, 0, 1, getTint(), 10)) + .ifMissing(source, () -> { + source.addParticle(UParticles.SPHERE, source.getOriginVector(), Vec3d.ZERO); + return null; // TODO: Attachables + }) // 1, getTint(), 10 .ifPresent(p -> p.setAttribute(0, radius)); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SiphoningSpell.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/SiphoningSpell.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SiphoningSpell.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/SiphoningSpell.java index cf084159..65431c94 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SiphoningSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/SiphoningSpell.java @@ -1,15 +1,16 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; import java.util.List; import java.util.stream.Collectors; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.damage.DamageSource; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellRegistry.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/SpellRegistry.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellRegistry.java rename to src/main/java/com/minelittlepony/unicopia/core/magic/spell/SpellRegistry.java index faf8fa56..c52361c6 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellRegistry.java +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/SpellRegistry.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.core.magic.spell; import java.util.HashMap; import java.util.HashSet; @@ -11,12 +11,11 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IHeldEffect; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; - +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IHeldEffect; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.IUseable; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -33,24 +32,11 @@ public class SpellRegistry { private final Map> keysByAffinity = new HashMap<>(); private SpellRegistry() { - registerSpell(SpellShield::new); - registerSpell(ChargingSpell::new); - registerSpell(SpellFire::new); - registerSpell(SpellIce::new); - registerSpell(PortalSpell::new); + registerSpell(ShieldSpell::new); + registerSpell(FireSpell::new); registerSpell(AttractiveSpell::new); - registerSpell(SpellDisguise::new); - registerSpell(SpellNecromancy::new); - registerSpell(AwkwardSpell::new); - registerSpell(SpellInferno::new); - registerSpell(SpellDrake::new); - registerSpell(SpellReveal::new); - registerSpell(DarknessSpell::new); - registerSpell(SpellFlame::new); + registerSpell(NecromancySpell::new); registerSpell(SiphoningSpell::new); - registerSpell(SpellLight::new); - registerSpell(ChangelingTrapSpell::new); - registerSpell(SpellScorch::new); } @Nullable diff --git a/src/main/java/com/minelittlepony/unicopia/core/magic/spell/package-info.java b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/package-info.java new file mode 100644 index 00000000..c6bac56b --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/magic/spell/package-info.java @@ -0,0 +1 @@ +package com.minelittlepony.unicopia.core.magic.spell; \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/IWalker.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/IWalker.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/mixin/IWalker.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/IWalker.java index 94b3f54c..b0646145 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/IWalker.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/IWalker.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinEntity.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/MixinEntity.java index 6cfcd9b8..06e018cf 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinEntity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinItemEntity.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/MixinItemEntity.java index fcda2a1f..a2392c50 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItemEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinItemEntity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @@ -6,8 +6,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.minelittlepony.unicopia.ducks.IItemEntity; -import com.minelittlepony.unicopia.entity.capabilities.ItemEntityCapabilities; +import com.minelittlepony.unicopia.core.ducks.IItemEntity; +import com.minelittlepony.unicopia.core.entity.ItemEntityCapabilities; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinLivingEntity.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/MixinLivingEntity.java index 96ad81e4..ecbde695 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinLivingEntity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -6,9 +6,9 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.minelittlepony.unicopia.ducks.IRaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.entity.capabilities.LivingEntityCapabilities; +import com.minelittlepony.unicopia.core.ducks.IRaceContainerHolder; +import com.minelittlepony.unicopia.core.entity.IEntity; +import com.minelittlepony.unicopia.core.entity.LivingEntityCapabilities; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; @@ -51,9 +51,11 @@ public abstract class MixinLivingEntity extends Entity implements IRaceContainer caster.onJump(); } - @Inject(method = "tick()V", at = @At("HEAD")) + @Inject(method = "tick()V", at = @At("HEAD"), cancellable = true) private void beforeTick(CallbackInfo info) { - caster.beforeUpdate(); + if (caster.beforeUpdate()) { + info.cancel(); + } } @Inject(method = "tick()V", at = @At("RETURN")) diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinPlayerEntity.java similarity index 86% rename from src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/MixinPlayerEntity.java index 1da86890..1b5a1d31 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinPlayerEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinPlayerEntity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -7,11 +7,11 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ducks.IRaceContainerHolder; -import com.minelittlepony.unicopia.entity.IEntity; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.entity.capabilities.PlayerCapabilities; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.ducks.IRaceContainerHolder; +import com.minelittlepony.unicopia.core.entity.IEntity; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.entity.player.PlayerCapabilities; import com.mojang.datafixers.util.Either; import net.minecraft.entity.ItemEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinProjectileEntity.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/mixin/MixinProjectileEntity.java index 8e7019bb..528114d2 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/MixinProjectileEntity.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.mixin; +package com.minelittlepony.unicopia.core.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.core.SpeciesList; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.Projectile; diff --git a/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinCamera.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinCamera.java new file mode 100644 index 00000000..059e07b5 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinCamera.java @@ -0,0 +1,35 @@ +package com.minelittlepony.unicopia.core.mixin.client; + +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.Inject; + +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.PlayerCamera; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.Camera; +import net.minecraft.entity.player.PlayerEntity; + +@Mixin(Camera.class) +public class MixinCamera { + + @Shadow + private float pitch; + @Shadow + private float yaw; + + @Inject(method = "updateRotation()V", at = @At("HEAD")) + private void updateRotation() { + PlayerEntity player = MinecraftClient.getInstance().player; + + if (player != null) { + PlayerCamera view = SpeciesList.instance().getPlayer(player).getCamera(); + + //event.setRoll(view.calculateRoll()); + pitch = view.calculatePitch(pitch); + yaw = view.calculateYaw(yaw); + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinGameRenderer.java b/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinGameRenderer.java new file mode 100644 index 00000000..af963762 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/core/mixin/client/MixinGameRenderer.java @@ -0,0 +1,26 @@ +package com.minelittlepony.unicopia.core.mixin.client; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.minelittlepony.unicopia.core.SpeciesList; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.Camera; +import net.minecraft.client.render.GameRenderer; +import net.minecraft.resource.SynchronousResourceReloadListener; + +@Mixin(GameRenderer.class) +abstract class MixinGameRenderer implements AutoCloseable, SynchronousResourceReloadListener { + + @Inject(method = "getFov(Lnet/minecraft/client/render/Camera;FZ)D", + at = @At("RETURN"), + cancellable = true) + private void onGetFov(Camera camera, float f, boolean z, CallbackInfoReturnable info) { + info.setReturnValue(SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player) + .getCamera() + .calculateFieldOfView(info.getReturnValue())); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java b/src/main/java/com/minelittlepony/unicopia/core/network/EffectSync.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/network/EffectSync.java rename to src/main/java/com/minelittlepony/unicopia/core/network/EffectSync.java index c4556993..404d8c1d 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/EffectSync.java +++ b/src/main/java/com/minelittlepony/unicopia/core/network/EffectSync.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.network; +package com.minelittlepony.unicopia.core.network; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; import net.minecraft.entity.data.TrackedData; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/minelittlepony/unicopia/network/ITransmittable.java b/src/main/java/com/minelittlepony/unicopia/core/network/ITransmittable.java similarity index 60% rename from src/main/java/com/minelittlepony/unicopia/network/ITransmittable.java rename to src/main/java/com/minelittlepony/unicopia/core/network/ITransmittable.java index a844f258..c1c0a2de 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/ITransmittable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/network/ITransmittable.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.network; +package com.minelittlepony.unicopia.core.network; public interface ITransmittable { void sendCapabilities(boolean full); diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java b/src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerAbility.java similarity index 77% rename from src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java rename to src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerAbility.java index 00b07d72..0cd14689 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerAbility.java +++ b/src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerAbility.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.network; +package com.minelittlepony.unicopia.core.network; import java.util.UUID; @@ -7,11 +7,10 @@ import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; import com.minelittlepony.jumpingcastle.api.Channel; import com.minelittlepony.jumpingcastle.api.Message; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ability.IData; -import com.minelittlepony.unicopia.ability.IPower; -import com.minelittlepony.unicopia.ability.PowersRegistry; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.ability.IPower; +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; @@ -31,13 +30,13 @@ public class MsgPlayerAbility implements Message, Message.Handler power, IData data) { + public MsgPlayerAbility(PlayerEntity player, IPower power, IPower.IData data) { senderId = player.getUuid(); powerIdentifier = power.getKeyName(); abilityJson = gson.toJson(data, power.getPackageType()); } - private void apply(IPower power, Channel channel) { + private void apply(IPower power, Channel channel) { MinecraftServer server = channel.getServer(); IPlayer player = SpeciesList.instance().getPlayer(server.getPlayerManager().getPlayer(senderId)); if (player == null) { diff --git a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java b/src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerCapabilities.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java rename to src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerCapabilities.java index 860880a3..5d725db1 100644 --- a/src/main/java/com/minelittlepony/unicopia/network/MsgPlayerCapabilities.java +++ b/src/main/java/com/minelittlepony/unicopia/core/network/MsgPlayerCapabilities.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.network; +package com.minelittlepony.unicopia.core.network; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -10,10 +10,10 @@ import java.util.UUID; import com.google.gson.annotations.Expose; import com.minelittlepony.jumpingcastle.api.Channel; import com.minelittlepony.jumpingcastle.api.Message; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; @@ -58,7 +58,7 @@ public class MsgPlayerCapabilities implements Message, Message.Handler { +public class DummyClientPlayerEntity extends AbstractClientPlayerEntity implements Owned { private PlayerListEntry playerInfo; diff --git a/src/main/java/com/minelittlepony/util/dummy/DummyPlayerEntity.java b/src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyPlayerEntity.java similarity index 80% rename from src/main/java/com/minelittlepony/util/dummy/DummyPlayerEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyPlayerEntity.java index 13120bfb..c3f60254 100644 --- a/src/main/java/com/minelittlepony/util/dummy/DummyPlayerEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyPlayerEntity.java @@ -1,7 +1,7 @@ -package com.minelittlepony.util.dummy; +package com.minelittlepony.unicopia.core.util.dummy; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.entity.IOwned; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.entity.Owned; import com.mojang.authlib.GameProfile; import net.minecraft.entity.player.PlayerEntity; @@ -9,7 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import net.minecraft.world.World; -public class DummyPlayerEntity extends PlayerEntity implements IOwned { +public class DummyPlayerEntity extends PlayerEntity implements Owned { private PlayerEntity owner; diff --git a/src/main/java/com/minelittlepony/util/dummy/DummyServerPlayerEntity.java b/src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyServerPlayerEntity.java similarity index 85% rename from src/main/java/com/minelittlepony/util/dummy/DummyServerPlayerEntity.java rename to src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyServerPlayerEntity.java index bd80ab0d..c3d95e9b 100644 --- a/src/main/java/com/minelittlepony/util/dummy/DummyServerPlayerEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/dummy/DummyServerPlayerEntity.java @@ -1,7 +1,7 @@ -package com.minelittlepony.util.dummy; +package com.minelittlepony.unicopia.core.util.dummy; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.entity.IOwned; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.entity.Owned; import com.mojang.authlib.GameProfile; import net.minecraft.entity.player.PlayerEntity; @@ -11,7 +11,7 @@ import net.minecraft.server.network.ServerPlayerInteractionManager; import net.minecraft.server.world.ServerWorld; import net.minecraft.text.Text; -public class DummyServerPlayerEntity extends ServerPlayerEntity implements IOwned { +public class DummyServerPlayerEntity extends ServerPlayerEntity implements Owned { private PlayerEntity owner; diff --git a/src/main/java/com/minelittlepony/unicopia/particles/ParticleConnection.java b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleConnection.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/particles/ParticleConnection.java rename to src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleConnection.java index e026bbb8..317473e3 100644 --- a/src/main/java/com/minelittlepony/unicopia/particles/ParticleConnection.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleConnection.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.particles; +package com.minelittlepony.unicopia.core.util.particles; import java.util.Optional; import java.util.function.Supplier; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.ICaster; /** * A connection class for updating and persisting an attached particle effect. diff --git a/src/main/java/com/minelittlepony/unicopia/particles/ParticleEmitter.java b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleEmitter.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/particles/ParticleEmitter.java rename to src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleEmitter.java index e01d1e5a..195eb177 100644 --- a/src/main/java/com/minelittlepony/unicopia/particles/ParticleEmitter.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleEmitter.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.particles; +package com.minelittlepony.unicopia.core.util.particles; import java.util.EnumSet; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/unicopia/particles/ParticleUtils.java b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleUtils.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/particles/ParticleUtils.java rename to src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleUtils.java index 6c11b99b..396e7d51 100644 --- a/src/main/java/com/minelittlepony/unicopia/particles/ParticleUtils.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/particles/ParticleUtils.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.particles; +package com.minelittlepony.unicopia.core.util.particles; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.entity.Entity; import net.minecraft.particle.ParticleEffect; diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/ITossable.java b/src/main/java/com/minelittlepony/unicopia/core/util/projectile/ITossable.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/projectile/ITossable.java rename to src/main/java/com/minelittlepony/unicopia/core/util/projectile/ITossable.java index 5e4f03bd..e5641d84 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/ITossable.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/projectile/ITossable.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.projectile; +package com.minelittlepony.unicopia.core.util.projectile; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.ICaster; import net.minecraft.block.BlockState; import net.minecraft.sound.SoundEvent; diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/ProjectileUtil.java b/src/main/java/com/minelittlepony/unicopia/core/util/projectile/ProjectileUtil.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/projectile/ProjectileUtil.java rename to src/main/java/com/minelittlepony/unicopia/core/util/projectile/ProjectileUtil.java index 5296f9d4..72336d31 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/ProjectileUtil.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/projectile/ProjectileUtil.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.projectile; +package com.minelittlepony.unicopia.core.util.projectile; import javax.annotation.Nullable; diff --git a/src/main/java/com/minelittlepony/util/shape/IShape.java b/src/main/java/com/minelittlepony/unicopia/core/util/shape/IShape.java similarity index 94% rename from src/main/java/com/minelittlepony/util/shape/IShape.java rename to src/main/java/com/minelittlepony/unicopia/core/util/shape/IShape.java index 6f56b5b4..604e3342 100644 --- a/src/main/java/com/minelittlepony/util/shape/IShape.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/shape/IShape.java @@ -1,9 +1,9 @@ -package com.minelittlepony.util.shape; +package com.minelittlepony.unicopia.core.util.shape; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; -import com.minelittlepony.util.Iterators; +import com.minelittlepony.unicopia.core.util.Iterators; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/com/minelittlepony/util/shape/Line.java b/src/main/java/com/minelittlepony/unicopia/core/util/shape/Line.java similarity index 98% rename from src/main/java/com/minelittlepony/util/shape/Line.java rename to src/main/java/com/minelittlepony/unicopia/core/util/shape/Line.java index 197831c5..e591bf20 100644 --- a/src/main/java/com/minelittlepony/util/shape/Line.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/shape/Line.java @@ -1,4 +1,4 @@ -package com.minelittlepony.util.shape; +package com.minelittlepony.unicopia.core.util.shape; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/util/shape/Sphere.java b/src/main/java/com/minelittlepony/unicopia/core/util/shape/Sphere.java similarity index 98% rename from src/main/java/com/minelittlepony/util/shape/Sphere.java rename to src/main/java/com/minelittlepony/unicopia/core/util/shape/Sphere.java index 2e2f9bf8..93810c5f 100644 --- a/src/main/java/com/minelittlepony/util/shape/Sphere.java +++ b/src/main/java/com/minelittlepony/unicopia/core/util/shape/Sphere.java @@ -1,4 +1,4 @@ -package com.minelittlepony.util.shape; +package com.minelittlepony.unicopia.core.util.shape; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockEvent.java b/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockEvent.java deleted file mode 100644 index abcc5214..00000000 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.minelittlepony.unicopia.enchanting; - -public interface IUnlockEvent { - -} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IFood.java b/src/main/java/com/minelittlepony/unicopia/entity/IFood.java deleted file mode 100644 index 0776e29e..00000000 --- a/src/main/java/com/minelittlepony/unicopia/entity/IFood.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.minelittlepony.unicopia.entity; - -import net.minecraft.item.ItemStack; - -public interface IFood { - - /** - * Start eating a piece of food. - * @param stack - */ - void begin(ItemStack stack); - - /** - * Ends eating. Eating was cancelled. - */ - void end(); - - /** - * Finish eating. *burp* - */ - void finish(); -} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IGravity.java b/src/main/java/com/minelittlepony/unicopia/entity/IGravity.java deleted file mode 100644 index ad308121..00000000 --- a/src/main/java/com/minelittlepony/unicopia/entity/IGravity.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.minelittlepony.unicopia.entity; - -/** - * Interface for controlling the gravity applicable to a specific entity. - */ -public interface IGravity { - - void setGraviationConstant(float constant); - - float getGravitationConstant(); - - default void clearGraviationConstant() { - setGraviationConstant(0); - } -} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/IInventory.java b/src/main/java/com/minelittlepony/unicopia/entity/IInventory.java deleted file mode 100644 index 45a93bf2..00000000 --- a/src/main/java/com/minelittlepony/unicopia/entity/IInventory.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.minelittlepony.unicopia.entity; - -import com.minelittlepony.unicopia.magic.items.IDependable; -import com.minelittlepony.unicopia.magic.items.IMagicalItem; - -public interface IInventory { - - /** - * Reinforces a players dependency on a certain magical artifact. - * A dependency will slowly drop over time if not reinforced - * - * Bad things might happen when it's removed. - */ - void enforceDependency(IDependable item); - - /** - * Checks if the player is wearing the specified magical artifact. - */ - boolean isWearing(IMagicalItem item); - - /** - * Returns how long the player has been wearing the given item. - */ - int getTicksAttached(IDependable item); - - /** - * Returns how dependent the player has become on the given item. - * - * Zero means not dependent at all / not wearing. - */ - float getNeedfulness(IDependable item); -} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/ICamera.java b/src/main/java/com/minelittlepony/unicopia/entity/capabilities/ICamera.java deleted file mode 100644 index cb2ef4a5..00000000 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/ICamera.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.minelittlepony.unicopia.entity.capabilities; - -public interface ICamera { - float calculateRoll(); - - float calculatePitch(float pitch); - - float calculateYaw(float yaw); - - float calculateFieldOfView(float initialfow); - - double getBaseRoll(); - - void setBaseRoll(double roll); -} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/IMagicals.java b/src/main/java/com/minelittlepony/unicopia/magic/IMagicals.java deleted file mode 100644 index 7ac13a6a..00000000 --- a/src/main/java/com/minelittlepony/unicopia/magic/IMagicals.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.minelittlepony.unicopia.magic; - -public interface IMagicals { - -} diff --git a/src/main/java/com/minelittlepony/unicopia/magic/items/IDependable.java b/src/main/java/com/minelittlepony/unicopia/magic/items/IDependable.java deleted file mode 100644 index 77b3c82f..00000000 --- a/src/main/java/com/minelittlepony/unicopia/magic/items/IDependable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.minelittlepony.unicopia.magic.items; - -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; - -public interface IDependable extends IMagicalItem { - void onRemoved(IPlayer player, float needfulness); -} diff --git a/src/main/java/com/minelittlepony/unicopia/world/BlockInteractions.java b/src/main/java/com/minelittlepony/unicopia/redux/BlockInteractions.java similarity index 69% rename from src/main/java/com/minelittlepony/unicopia/world/BlockInteractions.java rename to src/main/java/com/minelittlepony/unicopia/redux/BlockInteractions.java index e7a3ca53..0ef3c58a 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/BlockInteractions.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/BlockInteractions.java @@ -1,23 +1,19 @@ -package com.minelittlepony.unicopia.world; +package com.minelittlepony.unicopia.redux; import java.util.List; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.block.ITillable; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.block.ITillable; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.GrassBlock; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; import net.minecraft.world.World; public class BlockInteractions { @@ -39,26 +35,6 @@ public class BlockInteractions { return true; } - public ActionResult onBlockInteract(World world, BlockState state, BlockPos pos, PlayerEntity player, ItemStack stack, Direction facing, Hand hand) { - Item shill = UItems.Shills.getShill(stack.getItem()); - - if (shill != null) { - ActionResult result = shill.onItemUse(player, world, pos, hand, facing, 0, 0, 0); - - if (result == ActionResult.SUCCESS) { - return result; - } - } - - Block shillBlock = UBlocks.Shills.getShill(state.getBlock()); - - if (shillBlock != null && shillBlock.onBlockActivated(world, pos, state, player, hand, player.getHorizontalFacing(), 0.5F, 0.5F, 0.5F)) { - return ActionResult.SUCCESS; - } - - return ActionResult.PASS; - } - public void addAuxiliaryDrops(World world, BlockState state, BlockPos pos, List drops, int fortune) { Block block = state.getBlock(); diff --git a/src/main/java/com/minelittlepony/unicopia/CloudType.java b/src/main/java/com/minelittlepony/unicopia/redux/CloudType.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/CloudType.java rename to src/main/java/com/minelittlepony/unicopia/redux/CloudType.java index 9237eade..2dac124a 100644 --- a/src/main/java/com/minelittlepony/unicopia/CloudType.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/CloudType.java @@ -1,6 +1,7 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.redux; -import com.minelittlepony.unicopia.entity.CloudEntity; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.redux.entity.CloudEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/world/Hooks.java b/src/main/java/com/minelittlepony/unicopia/redux/Hooks.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/world/Hooks.java rename to src/main/java/com/minelittlepony/unicopia/redux/Hooks.java index a8bd6530..c831ab0c 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/Hooks.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/Hooks.java @@ -1,3 +1,4 @@ +package com.minelittlepony.unicopia.redux; /* package com.minelittlepony.unicopia.world; diff --git a/src/main/java/com/minelittlepony/unicopia/forgebullshit/OreReplacer.java b/src/main/java/com/minelittlepony/unicopia/redux/OreReplacer.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/forgebullshit/OreReplacer.java rename to src/main/java/com/minelittlepony/unicopia/redux/OreReplacer.java index 3d332abf..85e34c85 100644 --- a/src/main/java/com/minelittlepony/unicopia/forgebullshit/OreReplacer.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/OreReplacer.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.forgebullshit; +package com.minelittlepony.unicopia.redux; import java.util.ArrayList; import java.util.List; @@ -7,8 +7,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.google.common.collect.Lists; -import com.google.common.collect.Streams; - import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; @@ -102,12 +100,12 @@ public class OreReplacer { public void done() { log.info("Searching for ore replacements..."); - Streams.stream(ForgeRegistries.RECIPES).forEach(recipe -> + /*Streams.stream(ForgeRegistries.RECIPES).forEach(recipe -> remappers.stream() .filter(remapper -> remapper.canRemap(recipe)) .findFirst() .ifPresent(remapper -> remapper.replaceIngredients(this, recipe)) - ); + );*/ log.info("Replaced {} ingredients.", replacements); } diff --git a/src/main/java/com/minelittlepony/unicopia/redux/UContainers.java b/src/main/java/com/minelittlepony/unicopia/redux/UContainers.java new file mode 100644 index 00000000..c470d3c9 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/redux/UContainers.java @@ -0,0 +1,16 @@ +package com.minelittlepony.unicopia.redux; + +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.redux.container.BagOfHoldingContainer; + +import net.fabricmc.fabric.api.container.ContainerProviderRegistry; +import net.minecraft.util.Identifier; + +public class UContainers { + + public static final Identifier BAG_OF_HOLDING = new Identifier(UnicopiaCore.MODID, "bag_of_holding"); + + public static void bootstrap() { + ContainerProviderRegistry.INSTANCE.registerFactory(BAG_OF_HOLDING, BagOfHoldingContainer::new); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/UEntities.java b/src/main/java/com/minelittlepony/unicopia/redux/UEntities.java similarity index 82% rename from src/main/java/com/minelittlepony/unicopia/UEntities.java rename to src/main/java/com/minelittlepony/unicopia/redux/UEntities.java index 06b6fafd..d2ca978b 100644 --- a/src/main/java/com/minelittlepony/unicopia/UEntities.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/UEntities.java @@ -1,17 +1,17 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.redux; -import com.minelittlepony.unicopia.entity.ButterflyEntity; -import com.minelittlepony.unicopia.entity.CloudEntity; -import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.entity.ConstructionCloudEntity; -import com.minelittlepony.unicopia.entity.CuccoonEntity; -import com.minelittlepony.unicopia.entity.RacingCloudEntity; -import com.minelittlepony.unicopia.entity.RainbowEntity; -import com.minelittlepony.unicopia.entity.SpearEntity; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.util.collection.ListHelper; -import com.minelittlepony.unicopia.entity.SpellbookEntity; -import com.minelittlepony.unicopia.entity.WildCloudEntity; +import com.minelittlepony.unicopia.core.util.collection.ListHelper; +import com.minelittlepony.unicopia.redux.entity.ButterflyEntity; +import com.minelittlepony.unicopia.redux.entity.CloudEntity; +import com.minelittlepony.unicopia.redux.entity.ConstructionCloudEntity; +import com.minelittlepony.unicopia.redux.entity.CuccoonEntity; +import com.minelittlepony.unicopia.redux.entity.ProjectileEntity; +import com.minelittlepony.unicopia.redux.entity.RacingCloudEntity; +import com.minelittlepony.unicopia.redux.entity.RainbowEntity; +import com.minelittlepony.unicopia.redux.entity.SpearEntity; +import com.minelittlepony.unicopia.redux.entity.SpellbookEntity; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; +import com.minelittlepony.unicopia.redux.entity.WildCloudEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCategory; diff --git a/src/main/java/com/minelittlepony/unicopia/UMaterials.java b/src/main/java/com/minelittlepony/unicopia/redux/UMaterials.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/UMaterials.java rename to src/main/java/com/minelittlepony/unicopia/redux/UMaterials.java index 34761a91..86bf6dea 100644 --- a/src/main/java/com/minelittlepony/unicopia/UMaterials.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/UMaterials.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.redux; import net.minecraft.block.Material; import net.minecraft.block.MaterialColor; diff --git a/src/main/java/com/minelittlepony/unicopia/world/UWorld.java b/src/main/java/com/minelittlepony/unicopia/redux/UWorld.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/world/UWorld.java rename to src/main/java/com/minelittlepony/unicopia/redux/UWorld.java index c2ef73a0..f1ac9a8b 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/UWorld.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/UWorld.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world; +package com.minelittlepony.unicopia.redux; import java.util.List; import java.util.Queue; @@ -9,9 +9,11 @@ import java.util.stream.Collectors; import com.google.common.collect.Lists; import com.google.common.collect.Queues; import com.minelittlepony.jumpingcastle.Exceptions; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.world.structure.CloudDungeon; -import com.minelittlepony.unicopia.world.structure.GroundDungeon; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.redux.structure.CloudDungeon; +import com.minelittlepony.unicopia.redux.structure.CloudGen; +import com.minelittlepony.unicopia.redux.structure.GroundDungeon; +import com.minelittlepony.unicopia.redux.structure.StructuresGen; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; @@ -69,7 +71,7 @@ public class UWorld implements IWorldGenerator { Consumer task; while ((task = tickTasks.poll()) != null) { Consumer i = task; - Exceptions.logged(() -> i.accept(world), Unicopia.LOGGER); + Exceptions.logged(() -> i.accept(world), UnicopiaCore.LOGGER); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/redux/UnicopiaRedux.java b/src/main/java/com/minelittlepony/unicopia/redux/UnicopiaRedux.java new file mode 100644 index 00000000..1857767d --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/redux/UnicopiaRedux.java @@ -0,0 +1,63 @@ +package com.minelittlepony.unicopia.redux; + +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.registry.CommandRegistry; + +import com.minelittlepony.unicopia.core.ability.PowersRegistry; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.UContainers; +import com.minelittlepony.unicopia.redux.UWorld; +import com.minelittlepony.unicopia.redux.ability.PowerCloudBase; +import com.minelittlepony.unicopia.redux.ability.PowerDisguise; +import com.minelittlepony.unicopia.redux.ability.PowerEngulf; +import com.minelittlepony.unicopia.redux.ability.PowerStomp; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.command.DisguiseCommand; +import com.minelittlepony.unicopia.redux.enchanting.Pages; +import com.minelittlepony.unicopia.redux.item.UItems; +import com.minelittlepony.unicopia.redux.magic.spells.AwkwardSpell; +import com.minelittlepony.unicopia.redux.magic.spells.ChangelingTrapSpell; +import com.minelittlepony.unicopia.redux.magic.spells.ChargingSpell; +import com.minelittlepony.unicopia.redux.magic.spells.DarknessSpell; +import com.minelittlepony.unicopia.redux.magic.spells.DisguiseSpell; +import com.minelittlepony.unicopia.redux.magic.spells.FaithfulAssistantSpell; +import com.minelittlepony.unicopia.redux.magic.spells.FlameSpell; +import com.minelittlepony.unicopia.redux.magic.spells.GlowingSpell; +import com.minelittlepony.unicopia.redux.magic.spells.IceSpell; +import com.minelittlepony.unicopia.redux.magic.spells.InfernoSpell; +import com.minelittlepony.unicopia.redux.magic.spells.PortalSpell; +import com.minelittlepony.unicopia.redux.magic.spells.RevealingSpell; +import com.minelittlepony.unicopia.redux.magic.spells.ScorchSpell; + +public class UnicopiaRedux implements ModInitializer { + @Override + public void onInitialize() { + Pages.instance().load(); + + UBlocks.bootstrap(); + UItems.bootstrap(); + UContainers.bootstrap(); + UWorld.instance().init(); + + CommandRegistry.INSTANCE.register(false, DisguiseCommand::register); + + PowersRegistry.instance().registerPower(new PowerCloudBase()); + PowersRegistry.instance().registerPower(new PowerEngulf()); + PowersRegistry.instance().registerPower(new PowerStomp()); + PowersRegistry.instance().registerPower(new PowerDisguise()); + + SpellRegistry.instance().registerSpell(ChargingSpell::new); + SpellRegistry.instance().registerSpell(IceSpell::new); + SpellRegistry.instance().registerSpell(PortalSpell::new); + SpellRegistry.instance().registerSpell(AwkwardSpell::new); + SpellRegistry.instance().registerSpell(InfernoSpell::new); + SpellRegistry.instance().registerSpell(FaithfulAssistantSpell::new); + SpellRegistry.instance().registerSpell(RevealingSpell::new); + SpellRegistry.instance().registerSpell(DarknessSpell::new); + SpellRegistry.instance().registerSpell(FlameSpell::new); + SpellRegistry.instance().registerSpell(GlowingSpell::new); + SpellRegistry.instance().registerSpell(ChangelingTrapSpell::new); + SpellRegistry.instance().registerSpell(ScorchSpell::new); + SpellRegistry.instance().registerSpell(DisguiseSpell::new); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerCloudBase.java b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerCloudBase.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerCloudBase.java rename to src/main/java/com/minelittlepony/unicopia/redux/ability/PowerCloudBase.java index ac74f83a..9d4d6e64 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerCloudBase.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerCloudBase.java @@ -1,13 +1,15 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.redux.ability; import java.util.Optional; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.ability.IPower; +import com.minelittlepony.unicopia.core.ability.Numeric; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.VecHelper; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerDisguise.java b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerDisguise.java similarity index 71% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerDisguise.java rename to src/main/java/com/minelittlepony/unicopia/redux/ability/PowerDisguise.java index b5a42018..fac13f74 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerDisguise.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerDisguise.java @@ -1,17 +1,19 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.redux.ability; import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.IInAnimate; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.spells.SpellDisguise; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.ability.Hit; +import com.minelittlepony.unicopia.core.ability.PowerFeed; +import com.minelittlepony.unicopia.core.entity.InAnimate; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.redux.magic.spells.DisguiseSpell; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; @@ -25,6 +27,9 @@ import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; +/** + * Changeling ability to disguise themselves as other players. + */ public class PowerDisguise extends PowerFeed { @Override @@ -63,21 +68,21 @@ public class PowerDisguise extends PowerFeed { if (looked instanceof PlayerEntity) { looked = SpeciesList.instance().getPlayer((PlayerEntity)looked) - .getEffect(SpellDisguise.class) - .map(SpellDisguise::getDisguise) + .getEffect(DisguiseSpell.class) + .map(DisguiseSpell::getDisguise) .orElse(looked); } if (looked instanceof LightningEntity - || (looked instanceof IInAnimate && !((IInAnimate)looked).canInteract(Race.CHANGELING))) { + || (looked instanceof InAnimate && !((InAnimate)looked).canInteract(Race.CHANGELING))) { looked = null; } } player.getEntityWorld().playSound(null, player.getBlockPos(), SoundEvents.ENTITY_PARROT_IMITATE_POLAR_BEAR, SoundCategory.PLAYERS, 1.4F, 0.4F); - iplayer.getEffect(SpellDisguise.class).orElseGet(() -> { - SpellDisguise disc = new SpellDisguise(); + iplayer.getEffect(DisguiseSpell.class).orElseGet(() -> { + DisguiseSpell disc = new DisguiseSpell(); iplayer.setEffect(disc); return disc; diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerEngulf.java b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerEngulf.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerEngulf.java rename to src/main/java/com/minelittlepony/unicopia/redux/ability/PowerEngulf.java index c2f5d964..c06576a5 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerEngulf.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerEngulf.java @@ -1,11 +1,14 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.redux.ability; import javax.annotation.Nullable; import org.lwjgl.glfw.GLFW; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.spells.ChangelingTrapSpell; + +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.ability.Hit; +import com.minelittlepony.unicopia.core.ability.IPower; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.magic.spells.ChangelingTrapSpell; public class PowerEngulf implements IPower { diff --git a/src/main/java/com/minelittlepony/unicopia/ability/PowerStomp.java b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerStomp.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/ability/PowerStomp.java rename to src/main/java/com/minelittlepony/unicopia/redux/ability/PowerStomp.java index 9a27bb20..d30f7207 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/PowerStomp.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/ability/PowerStomp.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.ability; +package com.minelittlepony.unicopia.redux.ability; import java.util.ArrayList; import java.util.List; @@ -6,17 +6,19 @@ import org.lwjgl.glfw.GLFW; import com.google.common.collect.Lists; import com.google.gson.annotations.Expose; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.item.AppleItem; -import com.minelittlepony.unicopia.world.UWorld; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.VecHelper; -import com.minelittlepony.util.WorldEvent; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.ability.IPower; +import com.minelittlepony.unicopia.core.ability.Location; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.core.util.WorldEvent; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.UWorld; +import com.minelittlepony.unicopia.redux.item.AppleItem; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -40,6 +42,9 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +/** + * Earth Pony stomping ability + */ public class PowerStomp implements IPower { private final double rad = 4; diff --git a/src/main/java/com/minelittlepony/unicopia/advancements/AbstractCriterion.java b/src/main/java/com/minelittlepony/unicopia/redux/advancements/AbstractCriterion.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/advancements/AbstractCriterion.java rename to src/main/java/com/minelittlepony/unicopia/redux/advancements/AbstractCriterion.java index 469374ce..ba81cccd 100644 --- a/src/main/java/com/minelittlepony/unicopia/advancements/AbstractCriterion.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/advancements/AbstractCriterion.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.advancements; +package com.minelittlepony.unicopia.redux.advancements; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/minelittlepony/unicopia/advancements/AdvancementPredicate.java b/src/main/java/com/minelittlepony/unicopia/redux/advancements/AdvancementPredicate.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/advancements/AdvancementPredicate.java rename to src/main/java/com/minelittlepony/unicopia/redux/advancements/AdvancementPredicate.java index dbbef2ca..f5a0dc08 100644 --- a/src/main/java/com/minelittlepony/unicopia/advancements/AdvancementPredicate.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/advancements/AdvancementPredicate.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.advancements; +package com.minelittlepony.unicopia.redux.advancements; import com.google.gson.JsonElement; diff --git a/src/main/java/com/minelittlepony/unicopia/advancements/BOHDeathCriterion.java b/src/main/java/com/minelittlepony/unicopia/redux/advancements/BOHDeathCriterion.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/advancements/BOHDeathCriterion.java rename to src/main/java/com/minelittlepony/unicopia/redux/advancements/BOHDeathCriterion.java index 8b4215c4..997a11ca 100644 --- a/src/main/java/com/minelittlepony/unicopia/advancements/BOHDeathCriterion.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/advancements/BOHDeathCriterion.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.advancements; +package com.minelittlepony.unicopia.redux.advancements; import java.util.Optional; diff --git a/src/main/java/com/minelittlepony/unicopia/block/AbstractDoorBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/AbstractDoorBlock.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/AbstractDoorBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/AbstractDoorBlock.java index c0299de2..0b7ddaf7 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/AbstractDoorBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/AbstractDoorBlock.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import javax.annotation.Nullable; -import com.minelittlepony.util.WorldEvent; +import com.minelittlepony.unicopia.core.util.WorldEvent; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockAlfalfa.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockAlfalfa.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/block/BlockAlfalfa.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockAlfalfa.java index 2e9bd6ea..12c64e37 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockAlfalfa.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockAlfalfa.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.item.UItems; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.block.BlockState; import net.minecraft.block.CropBlock; @@ -44,16 +44,13 @@ public class BlockAlfalfa extends CropBlock { new Box(0, 0, 0, 1, 3, 1) }; - public BlockAlfalfa(String domain, String name) { - setRegistryName(domain, name); - setTranslationKey(name); - + public BlockAlfalfa() { setDefaultState(getDefaultState().with(HALF, Half.BOTTOM)); } @Override - public EnumOffsetType getOffsetType() { - return EnumOffsetType.XZ; + public OffsetType getOffsetType() { + return OffsetType.XZ; } @Override @@ -221,9 +218,9 @@ public class BlockAlfalfa extends CropBlock { BlockState above = world.getBlockState(pos.up(1)); BlockState higher = world.getBlockState(pos.up(2)); - boolean iCanGrow = !isMaxAge(state); - boolean aboveCanGrow = above.getBlock() != this || !isMaxAge(above); - boolean higherCanGrow = higher.getBlock() != this || !isMaxAge(higher); + boolean iCanGrow = !isMature(state); + boolean aboveCanGrow = above.getBlock() != this || !isMature(above); + boolean higherCanGrow = higher.getBlock() != this || !isMature(higher); return iCanGrow || aboveCanGrow || higherCanGrow; } @@ -261,38 +258,6 @@ public class BlockAlfalfa extends CropBlock { return state.get(HALF); } - @Override - public BlockState getStateFromMeta(int meta) { - int age = meta % (getMaxAge() + 1); - int half = (int)Math.floor(meta / (getMaxAge() + 1)) % Half.values().length; - - return withAge(age).with(HALF, Half.values()[half]); - } - - // 0: age:0, half:0 - // 1: age:1, half:0 - // 2: age:2, half:0 - // 3: age:3, half:0 - // 4: age:4, half:0 - // 5: age:0, half:1 - // 6: age:1, half:1 - // 7: age:2, half:1 - // 8: age:3, half:1 - // 9: age:4, half:1 - //10: age:0, half:2 - //11: age:1, half:2 - //12: age:2, half:2 - //13: age:3, half:2 - //14: age:4, half:2 - - @Override - public int getMetaFromState(BlockState state) { - int age = getAge(state); - int half = getHalf(state).ordinal(); - - return (half * (getMaxAge() + 1)) + age; - } - public enum Half implements StringIdentifiable { TOP, MIDDLE, diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudDoor.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudDoor.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/block/BlockCloudDoor.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudDoor.java index b7343e15..aac7d97e 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudDoor.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudDoor.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.UMaterials; +import com.minelittlepony.unicopia.redux.CloudType; +import com.minelittlepony.unicopia.redux.UMaterials; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.BlockRenderLayer; diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudFarm.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudFarm.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/block/BlockCloudFarm.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudFarm.java index f51aa0b6..67d3bb06 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudFarm.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudFarm.java @@ -1,11 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.UBlocks; +import com.minelittlepony.unicopia.redux.CloudType; import net.minecraft.block.BlockRenderLayer; import net.minecraft.block.BlockState; @@ -21,8 +20,8 @@ import net.minecraft.world.World; public class BlockCloudFarm extends UFarmland implements ICloudBlock { - public BlockCloudFarm(String domain, String name) { - super(domain, name); + public BlockCloudFarm() { + super(); setSoundType(SoundType.CLOTH); } diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudStairs.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudStairs.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/block/BlockCloudStairs.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudStairs.java index d8342af8..93b974f0 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockCloudStairs.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockCloudStairs.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.CloudType; +import com.minelittlepony.unicopia.redux.CloudType; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -27,18 +27,6 @@ public class BlockCloudStairs extends UStairs implements ICloudBlock { super(inherited); } - @SuppressWarnings("deprecation") - @Override - public boolean isTopSolid(BlockState state) { - return getCloudMaterialType(state) == CloudType.ENCHANTED && super.isTopSolid(state); - } - - @SuppressWarnings("deprecation") - @FUF(reason = "...Really?") - public boolean isSideSolid(BlockState base_state, BlockView world, BlockPos pos, Direction side) { - return getCloudMaterialType(base_state) == CloudType.ENCHANTED && super.isSideSolid(base_state, world, pos, side); - } - @Override public boolean isSideInvisible(BlockState state, BlockState beside, Direction face) { if (beside.getBlock() instanceof ICloudBlock) { diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockGrowingCuccoon.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockGrowingCuccoon.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/block/BlockGrowingCuccoon.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockGrowingCuccoon.java index 22d13723..9ed46d98 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockGrowingCuccoon.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockGrowingCuccoon.java @@ -1,16 +1,15 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.List; import java.util.Random; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.PosHelper; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.USounds; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.redux.UMaterials; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -47,7 +46,7 @@ public class BlockGrowingCuccoon extends Block { new Box(2/16F, 0, 2/16F, 14/16F, 12/16F, 14/16F), }; - public BlockGrowingCuccoon(String domain, String name) { + public BlockGrowingCuccoon() { super(UMaterials.hive); setTranslationKey(name); diff --git a/src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockTomatoPlant.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/BlockTomatoPlant.java index f7b8a22f..0e917ce0 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/BlockTomatoPlant.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/BlockTomatoPlant.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; -import com.minelittlepony.unicopia.item.UItems; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -32,7 +32,7 @@ public class BlockTomatoPlant extends CropBlock { public static final EnumProperty TYPE = EnumProperty.of("type", Type.class); - public BlockTomatoPlant(String domain, String name) { + public BlockTomatoPlant() { setDefaultState(getDefaultState().with(TYPE, Type.NORMAL)); setHardness(0.2F); setSoundType(SoundType.WOOD); @@ -117,7 +117,7 @@ public class BlockTomatoPlant extends CropBlock { @Override public void getDrops(NonNullList drops, WorldView world, BlockPos pos, BlockState state, int fortune) { - Random rand = world instanceof World ? ((World)world).rand : RANDOM; + Random rand = world instanceof World ? ((World)world).random : RANDOM; drops.add(new ItemStack(Items.STICK, 1, 0)); diff --git a/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/ChiselledChitinBlock.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/ChiselledChitinBlock.java index a0d520f2..8f638545 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ChiselledChitinBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/ChiselledChitinBlock.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.UMaterials; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/ChitinBlock.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/ChitinBlock.java index 7550aa72..5ea9ac64 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ChitinBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/ChitinBlock.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.UMaterials; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/CloudAnvilBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudAnvilBlock.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/block/CloudAnvilBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/CloudAnvilBlock.java index 5ca97065..55b3f371 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/CloudAnvilBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudAnvilBlock.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.util.WorldEvent; +import com.minelittlepony.unicopia.core.util.WorldEvent; +import com.minelittlepony.unicopia.redux.CloudType; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.AnvilBlock; diff --git a/src/main/java/com/minelittlepony/unicopia/block/CloudBanisterBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudBanisterBlock.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/block/CloudBanisterBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/CloudBanisterBlock.java index f7bccf58..bfb35032 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/CloudBanisterBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudBanisterBlock.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.CloudType; +import com.minelittlepony.unicopia.redux.CloudType; import net.minecraft.block.Block; import net.minecraft.block.BlockRenderLayer; diff --git a/src/main/java/com/minelittlepony/unicopia/block/CloudBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudBlock.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/block/CloudBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/CloudBlock.java index 8d36b3a2..ef57a992 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/CloudBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudBlock.java @@ -1,11 +1,10 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.item.MossItem; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.redux.CloudType; +import com.minelittlepony.unicopia.redux.item.MossItem; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/CloudFenceBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudFenceBlock.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/block/CloudFenceBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/CloudFenceBlock.java index 1fdc46a7..50bbd21b 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/CloudFenceBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudFenceBlock.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; -import com.minelittlepony.unicopia.CloudType; +import com.minelittlepony.unicopia.redux.CloudType; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.BlockRenderLayer; diff --git a/src/main/java/com/minelittlepony/unicopia/block/CloudSlabBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudSlabBlock.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/block/CloudSlabBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/CloudSlabBlock.java index f6e40232..3a2d3820 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/CloudSlabBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/CloudSlabBlock.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; -import com.minelittlepony.unicopia.CloudType; +import com.minelittlepony.unicopia.redux.CloudType; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/DiamondDoorBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/DiamondDoorBlock.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/block/DiamondDoorBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/DiamondDoorBlock.java index 25f1c4b9..0fb1b1f6 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/DiamondDoorBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/DiamondDoorBlock.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; +import com.minelittlepony.unicopia.core.EquinePredicates; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/block/DutchDoorBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/DutchDoorBlock.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/DutchDoorBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/DutchDoorBlock.java index 22fb39e0..6e2169f4 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/DutchDoorBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/DutchDoorBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.minecraft.block.BlockState; import net.minecraft.block.enums.DoubleBlockHalf; diff --git a/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/FruitLeavesBlock.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/FruitLeavesBlock.java index b77f89c9..c81659c6 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/FruitLeavesBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/FruitLeavesBlock.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; import java.util.function.Function; import javax.annotation.Nonnull; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.core.SpeciesList; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/GlowingGemBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/GlowingGemBlock.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/block/GlowingGemBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/GlowingGemBlock.java index dd23838f..65a44a83 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/GlowingGemBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/GlowingGemBlock.java @@ -1,7 +1,8 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; -import com.minelittlepony.unicopia.CloudType; + +import com.minelittlepony.unicopia.redux.CloudType; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/HiveWallBlock.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/HiveWallBlock.java index d5fdd880..c79aba7c 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/HiveWallBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/HiveWallBlock.java @@ -1,18 +1,17 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Map; import java.util.Random; import com.google.common.collect.Maps; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.USounds; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.UMaterials; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/ICloudBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/ICloudBlock.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/block/ICloudBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/ICloudBlock.java index f96a4b87..168bc78a 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ICloudBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/ICloudBlock.java @@ -1,8 +1,7 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.InteractionManager; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.redux.CloudType; import net.minecraft.block.BedBlock; import net.minecraft.block.Block; @@ -10,6 +9,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.ChestBlock; import net.minecraft.block.FallingBlock; import net.minecraft.block.TorchBlock; +import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.player.PlayerEntity; @@ -26,7 +26,7 @@ public interface ICloudBlock { default boolean handleRayTraceSpecialCases(World world, BlockPos pos, BlockState state) { if (world.isClient) { - PlayerEntity player = InteractionManager.instance().getClientPlayer(); + PlayerEntity player = MinecraftClient.getInstance().player; if (player.abilities.creativeMode) { return false; diff --git a/src/main/java/com/minelittlepony/unicopia/block/IColourful.java b/src/main/java/com/minelittlepony/unicopia/redux/block/IColourful.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/block/IColourful.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/IColourful.java index 540daf46..54c6b224 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/IColourful.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/IColourful.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/block/ITillable.java b/src/main/java/com/minelittlepony/unicopia/redux/block/ITillable.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/block/ITillable.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/ITillable.java index 8c1ccd54..a6cd9d7c 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/ITillable.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/ITillable.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import javax.annotation.Nonnull; diff --git a/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/SlimeLayerBlock.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/SlimeLayerBlock.java index fc9eca9b..324f1092 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/SlimeLayerBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/SlimeLayerBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.BlockRenderLayer; diff --git a/src/main/java/com/minelittlepony/unicopia/block/StickBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/StickBlock.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/block/StickBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/StickBlock.java index fab8439a..7d5da59e 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/StickBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/StickBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; diff --git a/src/main/java/com/minelittlepony/unicopia/block/SugarBlock.java b/src/main/java/com/minelittlepony/unicopia/redux/block/SugarBlock.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/block/SugarBlock.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/SugarBlock.java index 27b7c3b9..aa79ef0d 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/SugarBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/SugarBlock.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.FallingBlock; diff --git a/src/main/java/com/minelittlepony/unicopia/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/redux/block/UBlocks.java similarity index 59% rename from src/main/java/com/minelittlepony/unicopia/UBlocks.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/UBlocks.java index ee803f4d..b3ec6b26 100644 --- a/src/main/java/com/minelittlepony/unicopia/UBlocks.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/UBlocks.java @@ -1,47 +1,17 @@ -package com.minelittlepony.unicopia; +package com.minelittlepony.unicopia.redux.block; -import javax.annotation.Nullable; - -import com.minelittlepony.unicopia.CloudType; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.block.BlockAlfalfa; -import com.minelittlepony.unicopia.block.ChiselledChitinBlock; -import com.minelittlepony.unicopia.block.ChitinBlock; -import com.minelittlepony.unicopia.block.FruitLeavesBlock; -import com.minelittlepony.unicopia.block.GlowingGemBlock; -import com.minelittlepony.unicopia.block.BlockGrowingCuccoon; -import com.minelittlepony.unicopia.block.HiveWallBlock; -import com.minelittlepony.unicopia.block.IColourful; -import com.minelittlepony.unicopia.block.SlimeLayerBlock; -import com.minelittlepony.unicopia.block.StickBlock; -import com.minelittlepony.unicopia.block.CloudAnvilBlock; -import com.minelittlepony.unicopia.block.CloudSlabBlock; -import com.minelittlepony.unicopia.block.CloudBanisterBlock; -import com.minelittlepony.unicopia.block.BlockCloudStairs; -import com.minelittlepony.unicopia.block.DutchDoorBlock; -import com.minelittlepony.unicopia.block.SugarBlock; -import com.minelittlepony.unicopia.block.UPot; -import com.minelittlepony.unicopia.item.AppleItem; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.world.structure.CustomSaplingGenerator; -import com.minelittlepony.unicopia.block.BlockTomatoPlant; -import com.minelittlepony.unicopia.block.BlockCloudDoor; -import com.minelittlepony.unicopia.block.DiamondDoorBlock; -import com.minelittlepony.unicopia.block.BlockCloudFarm; -import com.minelittlepony.unicopia.block.CloudFenceBlock; -import com.minelittlepony.unicopia.block.CloudBlock; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.redux.CloudType; +import com.minelittlepony.unicopia.redux.UMaterials; +import com.minelittlepony.unicopia.redux.item.AppleItem; +import com.minelittlepony.unicopia.redux.item.UItems; +import com.minelittlepony.unicopia.redux.structure.CustomSaplingGenerator; import net.fabricmc.fabric.api.block.FabricBlockSettings; import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.block.SaplingBlock; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.color.item.ItemColors; -import net.minecraft.client.color.world.BiomeColors; -import net.minecraft.client.color.world.GrassColors; -import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.Identifier; @@ -81,7 +51,7 @@ public class UBlocks { public static final ChitinBlock chitin = register(new ChitinBlock(), "chitin_block"); public static final Block chissled_chitin = register(new ChiselledChitinBlock(), "chissled_chitin"); - public static final BlockGrowingCuccoon cuccoon = register(new BlockGrowingCuccoon(Unicopia.MODID, "cuccoon")); + public static final BlockGrowingCuccoon cuccoon = register(new BlockGrowingCuccoon(), "cuccoon"); public static final SlimeLayerBlock slime_layer = register(new SlimeLayerBlock(), "slime_layer"); public static final Block sugar_block = register(new SugarBlock(), "sugar_block"); @@ -99,29 +69,8 @@ public class UBlocks { private static T register(T block, String name) { - return Registry.BLOCK.add(new Identifier(Unicopia.MODID, name), block); + return Registry.BLOCK.add(new Identifier(UnicopiaCore.MODID, name), block); } - public static void bootstrap() { - ItemColors items; - BlockColors blocks; - items.register((stack, tint) -> { - BlockState state = ((BlockItem)stack.getItem()).getBlock().getDefaultState(); - - return blocks.getColorMultiplier(state, null, null, tint); - }, apple_leaves); - blocks.register((state, world, pos, tint) -> { - Block block = state.getBlock(); - - if (block instanceof IColourful) { - return ((IColourful)block).getCustomTint(state, tint); - } - - if (world != null && pos != null) { - return BiomeColors.getGrassColor(world, pos); - } - - return GrassColors.getColor(0.5D, 1); - }, apple_leaves); - } + public static void bootstrap() { } } diff --git a/src/main/java/com/minelittlepony/unicopia/block/UFarmland.java b/src/main/java/com/minelittlepony/unicopia/redux/block/UFarmland.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/UFarmland.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/UFarmland.java index fd892b68..66889a38 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UFarmland.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/UFarmland.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; -import com.minelittlepony.util.PosHelper; +import com.minelittlepony.unicopia.core.util.PosHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/block/UPot.java b/src/main/java/com/minelittlepony/unicopia/redux/block/UPot.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/block/UPot.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/UPot.java index 48b3e924..d570a172 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UPot.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/UPot.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import javax.annotation.Nullable; diff --git a/src/main/java/com/minelittlepony/unicopia/block/USlab.java b/src/main/java/com/minelittlepony/unicopia/redux/block/USlab.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/USlab.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/USlab.java index e248ce66..dd085a42 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/USlab.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/USlab.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/unicopia/block/UStairs.java b/src/main/java/com/minelittlepony/unicopia/redux/block/UStairs.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/block/UStairs.java rename to src/main/java/com/minelittlepony/unicopia/redux/block/UStairs.java index ed47ca99..803d435b 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UStairs.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/block/UStairs.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.block; +package com.minelittlepony.unicopia.redux.block; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java b/src/main/java/com/minelittlepony/unicopia/redux/client/URenderers.java similarity index 52% rename from src/main/java/com/minelittlepony/unicopia/client/URenderers.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/URenderers.java index d7f10468..2991cc4a 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/URenderers.java @@ -1,28 +1,28 @@ -package com.minelittlepony.unicopia.client; +package com.minelittlepony.unicopia.redux.client; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.client.particle.ParticleChangelingMagic; -import com.minelittlepony.unicopia.client.particle.ParticleDisk; -import com.minelittlepony.unicopia.client.particle.ParticleRaindrops; -import com.minelittlepony.unicopia.client.particle.ParticleSphere; -import com.minelittlepony.unicopia.client.particle.ParticleUnicornMagic; -import com.minelittlepony.unicopia.client.render.entity.ButterflyEntityRenderer; -import com.minelittlepony.unicopia.client.render.entity.RenderCloud; -import com.minelittlepony.unicopia.client.render.entity.RenderCuccoon; -import com.minelittlepony.unicopia.client.render.entity.RenderRainbow; -import com.minelittlepony.unicopia.client.render.entity.RenderSpear; -import com.minelittlepony.unicopia.client.render.entity.RenderSpellbook; -import com.minelittlepony.unicopia.client.render.entity.SpellcastEntityRenderer; -import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.entity.ButterflyEntity; -import com.minelittlepony.unicopia.entity.CloudEntity; -import com.minelittlepony.unicopia.entity.CuccoonEntity; -import com.minelittlepony.unicopia.entity.SpearEntity; -import com.minelittlepony.unicopia.entity.RainbowEntity; -import com.minelittlepony.unicopia.entity.SpellbookEntity; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.entity.WildCloudEntity; -import com.minelittlepony.util.collection.ListHelper; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.client.particle.ParticleChangelingMagic; +import com.minelittlepony.unicopia.core.client.particle.DiskParticle; +import com.minelittlepony.unicopia.core.client.particle.RaindropsParticle; +import com.minelittlepony.unicopia.core.client.particle.SphereParticle; +import com.minelittlepony.unicopia.core.client.particle.ParticleUnicornMagic; +import com.minelittlepony.unicopia.core.util.collection.ListHelper; +import com.minelittlepony.unicopia.redux.client.render.ButterflyEntityRenderer; +import com.minelittlepony.unicopia.redux.client.render.RenderCloud; +import com.minelittlepony.unicopia.redux.client.render.RenderCuccoon; +import com.minelittlepony.unicopia.redux.client.render.RenderRainbow; +import com.minelittlepony.unicopia.redux.client.render.RenderSpear; +import com.minelittlepony.unicopia.redux.client.render.RenderSpellbook; +import com.minelittlepony.unicopia.redux.client.render.SpellcastEntityRenderer; +import com.minelittlepony.unicopia.redux.entity.ButterflyEntity; +import com.minelittlepony.unicopia.redux.entity.CloudEntity; +import com.minelittlepony.unicopia.redux.entity.CuccoonEntity; +import com.minelittlepony.unicopia.redux.entity.ProjectileEntity; +import com.minelittlepony.unicopia.redux.entity.RainbowEntity; +import com.minelittlepony.unicopia.redux.entity.SpearEntity; +import com.minelittlepony.unicopia.redux.entity.SpellbookEntity; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; +import com.minelittlepony.unicopia.redux.entity.WildCloudEntity; import net.fabricmc.fabric.api.client.render.EntityRendererRegistry; import net.minecraft.client.MinecraftClient; @@ -50,8 +50,8 @@ public class URenderers { ParticleFactoryRegistry.instance().register(UParticles.UNICORN_MAGIC, ParticleUnicornMagic::new); ParticleFactoryRegistry.instance().register(UParticles.CHANGELING_MAGIC, ParticleChangelingMagic::new); - ParticleFactoryRegistry.instance().register(UParticles.RAIN_DROPS, ParticleRaindrops::new); - ParticleFactoryRegistry.instance().register(UParticles.SPHERE, ParticleSphere::new); - ParticleFactoryRegistry.instance().register(UParticles.DISK, ParticleDisk::new); + ParticleFactoryRegistry.instance().register(UParticles.RAIN_DROPS, RaindropsParticle::new); + ParticleFactoryRegistry.instance().register(UParticles.SPHERE, SphereParticle::new); + ParticleFactoryRegistry.instance().register(UParticles.DISK, DiskParticle::new); } } diff --git a/src/main/java/com/minelittlepony/unicopia/redux/client/UnicopiaReduxClient.java b/src/main/java/com/minelittlepony/unicopia/redux/client/UnicopiaReduxClient.java new file mode 100644 index 00000000..8851d1ce --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/UnicopiaReduxClient.java @@ -0,0 +1,53 @@ +package com.minelittlepony.unicopia.redux.client; + +import static com.minelittlepony.unicopia.core.EquinePredicates.MAGI; + +import javax.annotation.Nullable; + +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.block.IColourful; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.item.UItems; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.render.ColorProviderRegistry; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.color.world.BiomeColors; +import net.minecraft.client.color.world.GrassColors; +import net.minecraft.item.BlockItem; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ExtendedBlockView; + +public class UnicopiaReduxClient implements ClientModInitializer { + + @Override + public void onInitializeClient() { + //BuildInTexturesBakery.getBuiltInTextures().add(new Identifier(Unicopia.MODID, "items/empty_slot_gem")); + + ColorProviderRegistry.ITEM.register((stack, tint) -> { + return getLeavesColor(((BlockItem)stack.getItem()).getBlock().getDefaultState(), null, null, tint); + }, UItems.apple_leaves); + ColorProviderRegistry.BLOCK.register(UnicopiaReduxClient::getLeavesColor, UBlocks.apple_leaves); + ColorProviderRegistry.ITEM.register((stack, tint) -> { + if (MAGI.test(MinecraftClient.getInstance().player)) { + return SpellRegistry.instance().getSpellTintFromStack(stack); + } + return 0xFFFFFF; + }, UItems.spell, UItems.curse); + } + + private static int getLeavesColor(BlockState state, @Nullable ExtendedBlockView world, @Nullable BlockPos pos, int tint) { + Block block = state.getBlock(); + + if (block instanceof IColourful) { + return ((IColourful)block).getCustomTint(state, tint); + } + + if (world != null && pos != null) { + return BiomeColors.getGrassColor(world, pos); + } + + return GrassColors.getColor(0.5D, 1); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/ButterflyEntityRenderer.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/ButterflyEntityRenderer.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/ButterflyEntityRenderer.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/ButterflyEntityRenderer.java index fce09f1c..231d4073 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/ButterflyEntityRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/ButterflyEntityRenderer.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.client.render.entity.model.ButterflyEntityModel; -import com.minelittlepony.unicopia.entity.ButterflyEntity; +import com.minelittlepony.unicopia.redux.client.render.model.ButterflyEntityModel; +import com.minelittlepony.unicopia.redux.entity.ButterflyEntity; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.render.entity.EntityRenderDispatcher; diff --git a/src/main/java/com/minelittlepony/unicopia/client/ability/render/DisguiseRenderer.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/DisguiseRenderer.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/client/ability/render/DisguiseRenderer.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/DisguiseRenderer.java index 399de603..d57b938b 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/ability/render/DisguiseRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/DisguiseRenderer.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.ability.render; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.spells.SpellDisguise; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.magic.spells.DisguiseSpell; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.entity.EntityRenderDispatcher; @@ -47,7 +47,7 @@ public class DisguiseRenderer { } public boolean renderDisguiseToGui(IPlayer player) { - SpellDisguise effect = player.getEffect(SpellDisguise.class, false); + DisguiseSpell effect = player.getEffect(DisguiseSpell.class, false); if (effect == null || effect.isDead()) { return false; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCloud.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCloud.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCloud.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCloud.java index eb8a129a..798d4fdf 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCloud.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCloud.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; import net.fabricmc.fabric.api.client.render.EntityRendererRegistry; import net.minecraft.client.render.entity.EntityRenderDispatcher; @@ -7,9 +7,9 @@ import net.minecraft.util.Identifier; import org.lwjgl.opengl.GL11; -import com.minelittlepony.unicopia.client.render.entity.model.ModelCloud; -import com.minelittlepony.unicopia.entity.CloudEntity; -import com.minelittlepony.util.WorldHelper; +import com.minelittlepony.unicopia.core.util.WorldHelper; +import com.minelittlepony.unicopia.redux.client.render.model.ModelCloud; +import com.minelittlepony.unicopia.redux.entity.CloudEntity; public class RenderCloud extends LivingEntityRenderer { private static final Identifier cloud = new Identifier("unicopia", "textures/entity/clouds.png"); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCuccoon.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCuccoon.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCuccoon.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCuccoon.java index 5da3be60..24dc1d0a 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderCuccoon.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderCuccoon.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.client.render.entity.model.ModelCuccoon; -import com.minelittlepony.unicopia.entity.CuccoonEntity; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.redux.client.render.model.ModelCuccoon; +import com.minelittlepony.unicopia.redux.entity.CuccoonEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; @@ -14,7 +14,7 @@ import net.minecraft.util.Identifier; public class RenderCuccoon extends RenderLivingBase { - private static final Identifier TEXTURE = new Identifier(Unicopia.MODID, "textures/entity/cuccoon.png"); + private static final Identifier TEXTURE = new Identifier(UnicopiaCore.MODID, "textures/entity/cuccoon.png"); public RenderCuccoon(RenderManager manager) { super(manager, new ModelCuccoon(), 1); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderRainbow.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderRainbow.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderRainbow.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderRainbow.java index 0cfc9072..d806c88e 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderRainbow.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderRainbow.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; import org.lwjgl.opengl.GL11; -import com.minelittlepony.unicopia.entity.RainbowEntity; -import com.minelittlepony.util.WorldHelper; +import com.minelittlepony.unicopia.core.util.WorldHelper; +import com.minelittlepony.unicopia.redux.entity.RainbowEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpear.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpear.java similarity index 67% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpear.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpear.java index 44dd4c25..5a0080d0 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpear.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpear.java @@ -1,14 +1,14 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.entity.SpearEntity; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.redux.entity.SpearEntity; import net.minecraft.client.renderer.entity.RenderArrow; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.Identifier; public class RenderSpear extends RenderArrow { - public static final Identifier TEXTURE = new Identifier(Unicopia.MODID, "textures/entity/projectiles/spear.png"); + public static final Identifier TEXTURE = new Identifier(UnicopiaCore.MODID, "textures/entity/projectiles/spear.png"); public RenderSpear(RenderManager manager) { super(manager); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpellbook.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpellbook.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpellbook.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpellbook.java index 7181dbf9..375fc8ac 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/RenderSpellbook.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/RenderSpellbook.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.client.render.entity.model.ModelSpellbook; -import com.minelittlepony.unicopia.entity.SpellbookEntity; +import com.minelittlepony.unicopia.redux.client.render.model.ModelSpellbook; +import com.minelittlepony.unicopia.redux.entity.SpellbookEntity; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderLiving; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/SpellcastEntityRenderer.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/SpellcastEntityRenderer.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/SpellcastEntityRenderer.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/SpellcastEntityRenderer.java index cde68175..2fa70e45 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/SpellcastEntityRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/SpellcastEntityRenderer.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.render.entity; +package com.minelittlepony.unicopia.redux.client.render; -import com.minelittlepony.unicopia.client.render.entity.model.ModelGem; -import com.minelittlepony.unicopia.entity.SpellcastEntity; +import com.minelittlepony.unicopia.redux.client.render.model.ModelGem; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.fabricmc.fabric.api.client.render.EntityRendererRegistry; import net.minecraft.client.render.Frustum; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ButterflyEntityModel.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ButterflyEntityModel.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ButterflyEntityModel.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ButterflyEntityModel.java index 8716903c..92a673a4 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ButterflyEntityModel.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ButterflyEntityModel.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.client.render.entity.model; +package com.minelittlepony.unicopia.redux.client.render.model; -import com.minelittlepony.unicopia.entity.ButterflyEntity; +import com.minelittlepony.unicopia.redux.entity.ButterflyEntity; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.model.Cuboid; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCloud.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCloud.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCloud.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCloud.java index f9b07d59..bec8e6f1 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCloud.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCloud.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.entity.model; +package com.minelittlepony.unicopia.redux.client.render.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCuccoon.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCuccoon.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCuccoon.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCuccoon.java index 95d37e51..3b0fbf34 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelCuccoon.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelCuccoon.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.client.render.entity.model; +package com.minelittlepony.unicopia.redux.client.render.model; -import com.minelittlepony.unicopia.entity.CuccoonEntity; +import com.minelittlepony.unicopia.redux.entity.CuccoonEntity; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelGem.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelGem.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelGem.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelGem.java index 54e8a957..532c3b04 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelGem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelGem.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.client.render.entity.model; +package com.minelittlepony.unicopia.redux.client.render.model; -import com.minelittlepony.unicopia.client.render.model.ModelQuads; -import com.minelittlepony.unicopia.entity.SpellcastEntity; +import com.minelittlepony.unicopia.core.client.render.ModelQuads; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.model.Cuboid; diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelSpellbook.java b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelSpellbook.java similarity index 85% rename from src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelSpellbook.java rename to src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelSpellbook.java index 3c1bcd99..9090a65c 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/model/ModelSpellbook.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/client/render/model/ModelSpellbook.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.client.render.entity.model; +package com.minelittlepony.unicopia.redux.client.render.model; import net.minecraft.client.model.ModelBook; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java b/src/main/java/com/minelittlepony/unicopia/redux/command/DisguiseCommand.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java rename to src/main/java/com/minelittlepony/unicopia/redux/command/DisguiseCommand.java index 6f3ad753..bb128f13 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/DisguiseCommand.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/command/DisguiseCommand.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.command; +package com.minelittlepony.unicopia.redux.command; import java.util.function.Function; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.spells.SpellDisguise; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.magic.spells.DisguiseSpell; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -23,10 +23,10 @@ import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.world.GameRules; -class DisguiseCommand { +public class DisguiseCommand { private static final SimpleCommandExceptionType FAILED_EXCEPTION = new SimpleCommandExceptionType(new TranslatableText("commands.disguise.notfound")); - static void register(CommandDispatcher dispatcher) { + public static void register(CommandDispatcher dispatcher) { LiteralArgumentBuilder builder = CommandManager .literal("disguise") .requires(s -> s.hasPermissionLevel(2)) @@ -61,10 +61,10 @@ class DisguiseCommand { throw FAILED_EXCEPTION.create(); } - SpellDisguise effect = iplayer.getEffect(SpellDisguise.class, true); + DisguiseSpell effect = iplayer.getEffect(DisguiseSpell.class, true); if (effect == null) { - iplayer.setEffect(new SpellDisguise().setDisguise(entity)); + iplayer.setEffect(new DisguiseSpell().setDisguise(entity)); } else { effect.setDisguise(entity); } @@ -83,7 +83,7 @@ class DisguiseCommand { static int reveal(ServerCommandSource source, PlayerEntity player) { IPlayer iplayer = SpeciesList.instance().getPlayer(player); - iplayer.getEffect(SpellDisguise.class).ifPresent(disguise -> { + iplayer.getEffect(DisguiseSpell.class).ifPresent(disguise -> { disguise.setDead(); }); diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/ContainerOfHolding.java b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingContainer.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/ContainerOfHolding.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingContainer.java index ea6b571f..8d7255bf 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/ContainerOfHolding.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingContainer.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import net.minecraft.container.Container; import net.minecraft.container.Slot; @@ -9,16 +9,16 @@ import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.PacketByteBuf; -public class ContainerOfHolding extends Container { - private final InventoryOfHolding inventory; +public class BagOfHoldingContainer extends Container { + private final BagOfHoldingInventory inventory; private ItemStack sourceStack; - public ContainerOfHolding(int num, Identifier id, PlayerEntity player, PacketByteBuf buff) { + public BagOfHoldingContainer(int num, Identifier id, PlayerEntity player, PacketByteBuf buff) { super(null, num); sourceStack = player.getStackInHand(Hand.MAIN_HAND); - inventory = InventoryOfHolding.getInventoryFromStack(sourceStack); + inventory = BagOfHoldingInventory.getInventoryFromStack(sourceStack); inventory.onInvOpen(player); close(player); diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/InventoryOfHolding.java b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingInventory.java similarity index 63% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/InventoryOfHolding.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingInventory.java index fd841d1b..db53d566 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/InventoryOfHolding.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingInventory.java @@ -1,17 +1,16 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.function.BiFunction; -import com.minelittlepony.unicopia.advancements.UAdvancements; -import com.minelittlepony.unicopia.magic.items.IMagicalItem; -import com.minelittlepony.util.InbtSerialisable; -import com.minelittlepony.util.MagicalDamageSource; - +import com.minelittlepony.unicopia.core.magic.IMagicalItem; +import com.minelittlepony.unicopia.core.util.HeavyInventoryUtils; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.redux.advancements.BOHDeathCriterion; import net.minecraft.block.Block; -import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.EnderChestBlock; @@ -31,22 +30,21 @@ import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.EmptyBlockView; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion.DestructionType; import net.minecraft.world.loot.context.LootContext; import net.minecraft.world.loot.context.LootContextParameters; -public class InventoryOfHolding extends BasicInventory implements InbtSerialisable { +public class BagOfHoldingInventory extends BasicInventory implements InbtSerialisable { public static final int NBT_COMPOUND = 10; public static final int MIN_SIZE = 18; - static InventoryOfHolding empty() { - return new InventoryOfHolding(new ArrayList<>(), ItemStack.EMPTY); + static BagOfHoldingInventory empty() { + return new BagOfHoldingInventory(new ArrayList<>(), ItemStack.EMPTY); } - public static InventoryOfHolding getInventoryFromStack(ItemStack stack) { + public static BagOfHoldingInventory getInventoryFromStack(ItemStack stack) { List items = new ArrayList<>(); iterateContents(stack, (i, item) -> { @@ -54,7 +52,7 @@ public class InventoryOfHolding extends BasicInventory implements InbtSerialisab return true; }); - return new InventoryOfHolding(items, stack); + return new BagOfHoldingInventory(items, stack); } public static void iterateContents(ItemStack stack, BiFunction itemConsumer) { @@ -76,7 +74,7 @@ public class InventoryOfHolding extends BasicInventory implements InbtSerialisab private final Optional name; - private InventoryOfHolding(List items, ItemStack source) { + private BagOfHoldingInventory(List items, ItemStack source) { super(items.size() + 9 - (items.size() % 9)); for (int i = 0; i < items.size(); i++) { @@ -116,7 +114,7 @@ public class InventoryOfHolding extends BasicInventory implements InbtSerialisab } } - encodeStackWeight(blockStack, getContentsTotalWorth(blockInventory, true), true); + HeavyInventoryUtils.encodeStackWeight(blockStack, HeavyInventoryUtils.getContentsTotalWorth(blockInventory, true), true); world.removeBlockEntity(pos); world.setBlockState(pos, Blocks.AIR.getDefaultState()); @@ -136,7 +134,7 @@ public class InventoryOfHolding extends BasicInventory implements InbtSerialisab public void onInvClose(PlayerEntity player) { if (checkExplosionConditions()) { if (player instanceof ServerPlayerEntity) { - UAdvancements.BOH_DEATH.trigger((ServerPlayerEntity)player); + BOHDeathCriterion.INSTANCE.trigger((ServerPlayerEntity)player); } player.damage(MagicalDamageSource.create("paradox"), 1000); player.world.createExplosion(player, player.x, player.y, player.z, 5, DestructionType.DESTROY); @@ -186,84 +184,11 @@ public class InventoryOfHolding extends BasicInventory implements InbtSerialisab } public double getContentsTotalWorth() { - return getContentsTotalWorth(this, true); + return HeavyInventoryUtils.getContentsTotalWorth(this, true); } public void writeTostack(ItemStack stack) { toNBT(stack.getOrCreateSubTag("inventory")); } - public static double getContentsTotalWorth(Inventory inventory, boolean deep) { - double total = 0; - - for (int i = 0; i < inventory.getInvSize(); i++) { - ItemStack stack = inventory.getInvStack(i); - - double weightOfOne = decodeStackWeight(stack, deep); - - if (weightOfOne == 0) { - total += stack.getCount(); - } else { - total += weightOfOne * stack.getCount(); - } - } - - return total; - } - - public static void encodeStackWeight(ItemStack stack, double weight, boolean deep) { - CompoundTag compound = stack.getSubTag("inventory"); - if (weight == 0 && compound != null) { - compound.remove("weight"); - compound.remove("deep"); - if (compound.isEmpty()) { - stack.removeSubTag("inventory"); - } - } else { - if (weight != 0) { - if (compound == null) { - compound = stack.getOrCreateSubTag("inventory"); - } - - compound.putDouble("weight", weight); - if (deep) { - compound.putBoolean("deep", deep); - } - } - } - } - - public static double decodeStackWeight(ItemStack stack, boolean deep) { - if (!stack.isEmpty() && stack.hasTag()) { - CompoundTag bet = stack.getSubTag("BlockEntityTag"); - CompoundTag compound = stack.getSubTag("inventory"); - - boolean hasWeight = compound != null && compound.containsKey("weight"); - - if (deep) { - if (!hasWeight && bet != null) { - Block b = Block.getBlockFromItem(stack.getItem()); - BlockEntity te = b.hasBlockEntity() ? ((BlockEntityProvider)b).createBlockEntity(EmptyBlockView.INSTANCE) : null; - - double weight = 0; - - if (te instanceof Inventory) { - te.fromTag(bet); - - weight = getContentsTotalWorth((Inventory)te, deep); - } - - encodeStackWeight(stack, weight, deep); - - return weight; - } - } - - if (hasWeight && (deep || !compound.containsKey("deep"))) { - return compound.getDouble("weight"); - } - } - - return 0; - } } \ No newline at end of file diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiOfHolding.java b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingScreen.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiOfHolding.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingScreen.java index b5f448cc..6626926c 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiOfHolding.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/BagOfHoldingScreen.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import java.io.IOException; @@ -8,7 +8,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.ContainerScreen9; import net.minecraft.util.Identifier; -public class GuiOfHolding extends ContainerScreen9 { +public class BagOfHoldingScreen extends ContainerScreen9 { private static final Identifier CHEST_GUI_TEXTURE = new Identifier("textures/gui/container/generic_54.png"); private final int inventoryRows; @@ -16,7 +16,7 @@ public class GuiOfHolding extends ContainerScreen9 { private final Scrollbar scrollbar = new Scrollbar(); - public GuiOfHolding(IInteractionObject interaction) { + public BagOfHoldingScreen(IInteractionObject interaction) { super(interaction.createContainer(MinecraftClient.getInstance().player.inventory, MinecraftClient.getInstance().player)); playerRows = MinecraftClient.getInstance().player.inventory.getSizeInventory() / 9; @@ -85,7 +85,7 @@ public class GuiOfHolding extends ContainerScreen9 { @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - ContainerOfHolding coh = (ContainerOfHolding)inventorySlots; + BagOfHoldingContainer coh = (BagOfHoldingContainer)inventorySlots; fontRenderer.drawString(coh.getName(), 8, 6, 0x404040); } diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookContainer.java b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookContainer.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookContainer.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookContainer.java index f5d5c148..106a178b 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookContainer.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookContainer.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import javax.annotation.Nonnull; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.world.UWorld; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.UWorld; +import com.minelittlepony.unicopia.redux.enchanting.IPageUnlockListener; import net.minecraft.container.Container; import net.minecraft.container.Slot; diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookInventory.java b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookInventory.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookInventory.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookInventory.java index 9cc14a69..cd9976d4 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellBookInventory.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookInventory.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import net.minecraft.container.Container; import net.minecraft.inventory.CraftingInventory; diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiSpellBook.java b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookScreen.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiSpellBook.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookScreen.java index 2dcce13e..e3422972 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/GuiSpellBook.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellBookScreen.java @@ -1,28 +1,22 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; import java.io.IOException; import org.lwjgl.opengl.GL11; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.unicopia.enchanting.IPage; -import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; -import com.minelittlepony.unicopia.enchanting.PageState; -import com.minelittlepony.unicopia.enchanting.Pages; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.enchanting.IPage; +import com.minelittlepony.unicopia.core.enchanting.PageState; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.redux.enchanting.IPageUnlockListener; +import com.minelittlepony.unicopia.redux.enchanting.Pages; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.texture.TextureUtil; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.Slot; import net.minecraft.util.math.BlockPos; import net.minecraft.util.Identifier; -public class GuiSpellBook extends GuiContainer implements IPageUnlockListener { +public class SpellBookScreen extends ContainerScreen implements IPageUnlockListener { private static IPage currentIPage; @@ -33,7 +27,7 @@ public class GuiSpellBook extends GuiContainer implements IPageUnlockListener { private PageButton nextPage; private PageButton prevPage; - public GuiSpellBook(PlayerEntity player) { + public SpellBookScreen(PlayerEntity player) { super(new SpellBookContainer(player.inventory, player.world, new BlockPos(player))); player.openContainer = inventorySlots; @@ -171,7 +165,7 @@ public class GuiSpellBook extends GuiContainer implements IPageUnlockListener { drawModalRectWithCustomSizedTexture(left, top, 0, 0, xSize, ySize, 512, 256); } else { if (playerExtension.getWorld().rand.nextInt(100) == 0) { - Unicopia.LOGGER.fatal("Missing texture " + texture); + UnicopiaCore.LOGGER.fatal("Missing texture " + texture); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellbookResultSlot.java b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellbookResultSlot.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellbookResultSlot.java rename to src/main/java/com/minelittlepony/unicopia/redux/container/SpellbookResultSlot.java index 9ed3140e..6522fdda 100644 --- a/src/main/java/com/minelittlepony/unicopia/inventory/gui/SpellbookResultSlot.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/container/SpellbookResultSlot.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.inventory.gui; +package com.minelittlepony.unicopia.redux.container; -import com.minelittlepony.unicopia.enchanting.IPageOwner; -import com.minelittlepony.unicopia.enchanting.IPageUnlockListener; -import com.minelittlepony.unicopia.enchanting.SpellCraftingEvent; -import com.minelittlepony.unicopia.item.MagicGemItem; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.enchanting.IPageUnlockListener; +import com.minelittlepony.unicopia.redux.enchanting.SpellCraftingEvent; +import com.minelittlepony.unicopia.redux.item.MagicGemItem; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.Inventory; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/CompoundCondition.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/CompoundCondition.java index 8d8d2e02..5a433d0b 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/CompoundCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/CompoundCondition.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import java.util.List; import java.util.function.Predicate; @@ -7,6 +7,8 @@ import java.util.stream.Stream; import com.google.common.collect.Lists; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; public class CompoundCondition implements IUnlockCondition { diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IConditionFactory.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IConditionFactory.java similarity index 73% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IConditionFactory.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/IConditionFactory.java index ccfe32e9..9a19ea09 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IConditionFactory.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IConditionFactory.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import com.google.gson.JsonObject; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageUnlockListener.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IPageUnlockListener.java similarity index 69% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IPageUnlockListener.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/IPageUnlockListener.java index 706c2a9e..2d7f19bc 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IPageUnlockListener.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IPageUnlockListener.java @@ -1,4 +1,6 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; + +import com.minelittlepony.unicopia.core.enchanting.IPage; @FunctionalInterface public interface IPageUnlockListener { diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IUnlockCondition.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/IUnlockCondition.java index 48fb4b71..b10fc980 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/IUnlockCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/IUnlockCondition.java @@ -1,7 +1,9 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; /** * A PageEvent for determining when certain pages must be unlocked. diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageInstance.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageInstance.java index 34f2d08a..5898008b 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/PageInstance.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageInstance.java @@ -1,10 +1,14 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; +import com.minelittlepony.unicopia.core.enchanting.IPage; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; +import com.minelittlepony.unicopia.core.enchanting.PageState; import net.minecraft.util.Identifier; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageStateCondition.java similarity index 69% rename from src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageStateCondition.java index b4561509..d0a43dc3 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/PageStateCondition.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/PageStateCondition.java @@ -1,6 +1,10 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import com.google.gson.JsonObject; +import com.minelittlepony.unicopia.core.enchanting.IPage; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; +import com.minelittlepony.unicopia.core.enchanting.PageState; import net.minecraft.util.Identifier; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/Pages.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/Pages.java index 8e0cba37..b2c58fb0 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/Pages.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/Pages.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import java.util.List; import java.util.Map; @@ -12,7 +12,11 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.minelittlepony.util.AssetWalker; +import com.minelittlepony.unicopia.core.enchanting.IPage; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; +import com.minelittlepony.unicopia.core.enchanting.PageState; +import com.minelittlepony.unicopia.core.util.AssetWalker; import net.minecraft.util.Identifier; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/SpellCraftingEvent.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/SpellCraftingEvent.java index 5c82fe01..ac18e305 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/SpellCraftingEvent.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/SpellCraftingEvent.java @@ -1,13 +1,15 @@ -package com.minelittlepony.unicopia.enchanting; +package com.minelittlepony.unicopia.redux.enchanting; import javax.annotation.Nonnull; import javax.annotation.Nullable; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; -import com.minelittlepony.unicopia.item.MagicGemItem; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.enchanting.IPageOwner; +import com.minelittlepony.unicopia.core.enchanting.IUnlockEvent; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.item.MagicGemItem; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AbstractSpecialRecipe.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AbstractSpecialRecipe.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AbstractSpecialRecipe.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AbstractSpecialRecipe.java index 2c897d3f..96efd578 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AbstractSpecialRecipe.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AbstractSpecialRecipe.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.ArrayList; import java.util.List; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.inventory.gui.SpellBookInventory; -import com.minelittlepony.unicopia.item.UItems; +import com.minelittlepony.unicopia.redux.container.SpellBookInventory; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.inventory.CraftingInventory; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredient.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredient.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredient.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredient.java index 0cc19193..90a088cd 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredient.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredient.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.stream.Stream; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredients.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredients.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredients.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredients.java index 4dab9790..6a90e286 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/AffineIngredients.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/AffineIngredients.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.Map; import com.google.common.collect.Maps; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.minelittlepony.unicopia.Unicopia; -import com.minelittlepony.util.AssetWalker; +import com.minelittlepony.unicopia.core.UnicopiaCore; +import com.minelittlepony.unicopia.core.util.AssetWalker; import net.minecraft.util.Identifier; @@ -20,7 +20,7 @@ public class AffineIngredients { private final Map storedIngredients = Maps.newHashMap(); - private final AssetWalker walker = new AssetWalker(new Identifier(Unicopia.MODID, "enchanting/ingredients"), this::handleJson); + private final AssetWalker walker = new AssetWalker(new Identifier(UnicopiaCore.MODID, "enchanting/ingredients"), this::handleJson); public void load() { storedIngredients.clear(); diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/CompoundSpellIngredient.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/CompoundSpellIngredient.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/CompoundSpellIngredient.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/CompoundSpellIngredient.java index 24646c59..5b07e4de 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/CompoundSpellIngredient.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/CompoundSpellIngredient.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.List; import java.util.stream.Stream; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SingleSpellIngredient.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SingleSpellIngredient.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SingleSpellIngredient.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SingleSpellIngredient.java index 746d0fec..cd335550 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SingleSpellIngredient.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SingleSpellIngredient.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.Optional; import java.util.stream.Stream; @@ -7,7 +7,7 @@ import com.google.common.collect.Streams; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpecialRecipe.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpecialRecipe.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpecialRecipe.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpecialRecipe.java index 627bd781..29adf90a 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpecialRecipe.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpecialRecipe.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import com.google.gson.JsonObject; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellIngredient.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellIngredient.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellIngredient.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellIngredient.java index cbd91cb6..7cf6213a 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellIngredient.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellIngredient.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellRecipe.java b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellRecipe.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellRecipe.java rename to src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellRecipe.java index ac0b4ddb..a3f02975 100644 --- a/src/main/java/com/minelittlepony/unicopia/enchanting/recipe/SpellRecipe.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/enchanting/recipe/SpellRecipe.java @@ -1,9 +1,9 @@ -package com.minelittlepony.unicopia.enchanting.recipe; +package com.minelittlepony.unicopia.redux.enchanting.recipe; import com.google.gson.JsonObject; -import com.minelittlepony.unicopia.inventory.gui.SpellBookInventory; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.container.SpellBookInventory; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.inventory.CraftingInventory; import net.minecraft.inventory.Inventory; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ButterflyEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/ButterflyEntity.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/entity/ButterflyEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/ButterflyEntity.java index a802491f..30519c38 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ButterflyEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/ButterflyEntity.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.Random; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.core.UnicopiaCore; import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; @@ -222,7 +222,7 @@ public class ButterflyEntity extends AmbientEntity { WHITE_MONARCH, BRIMSTONE; - private final Identifier skin = new Identifier(Unicopia.MODID, "textures/entity/butterfly/" + name().toLowerCase() + ".png"); + private final Identifier skin = new Identifier(UnicopiaCore.MODID, "textures/entity/butterfly/" + name().toLowerCase() + ".png"); public Identifier getSkin() { return skin; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/CloudEntity.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/CloudEntity.java index edf3981d..858c3c9b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/CloudEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/CloudEntity.java @@ -1,17 +1,18 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.Map; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.ability.PowerCloudBase.ICloudEntity; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.particles.ParticleEmitter; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.entity.InAnimate; +import com.minelittlepony.unicopia.core.util.particles.ParticleEmitter; +import com.minelittlepony.unicopia.redux.ability.PowerCloudBase.ICloudEntity; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -58,7 +59,7 @@ import net.minecraft.world.LocalDifficulty; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; -public class CloudEntity extends FlyingEntity implements ICloudEntity, IInAnimate { +public class CloudEntity extends FlyingEntity implements ICloudEntity, InAnimate { private static final TrackedData RAINTIMER = DataTracker.registerData(CloudEntity.class, TrackedDataHandlerRegistry.INTEGER); private static final TrackedData THUNDERING = DataTracker.registerData(CloudEntity.class, TrackedDataHandlerRegistry.BOOLEAN); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ConstructionCloudEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/ConstructionCloudEntity.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/entity/ConstructionCloudEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/ConstructionCloudEntity.java index 8376f873..60f7ff4b 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ConstructionCloudEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/ConstructionCloudEntity.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.EquinePredicates; +import com.minelittlepony.unicopia.core.EquinePredicates; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/CuccoonEntity.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/CuccoonEntity.java index 69c578c6..8e97773e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/CuccoonEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/CuccoonEntity.java @@ -1,16 +1,18 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.List; import javax.annotation.Nullable; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.USounds; +import com.minelittlepony.unicopia.core.entity.InAnimate; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; @@ -40,7 +42,7 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.GameRules; import net.minecraft.world.World; -public class CuccoonEntity extends LivingEntity implements IMagicals, IInAnimate { +public class CuccoonEntity extends LivingEntity implements IMagicals, InAnimate { private static final TrackedData STRUGGLE_COUNT = DataTracker.registerData(CuccoonEntity.class, TrackedDataHandlerRegistry.INTEGER); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/ProjectileEntity.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/ProjectileEntity.java index e7ccdb32..004f3bc3 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/ProjectileEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/ProjectileEntity.java @@ -1,16 +1,17 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.UUID; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.network.EffectSync; -import com.minelittlepony.unicopia.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.projectile.ITossable; -import com.minelittlepony.unicopia.projectile.ITossableItem; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.network.EffectSync; +import com.minelittlepony.unicopia.core.util.projectile.ITossable; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; +import com.minelittlepony.unicopia.redux.util.projectile.IAdvancedProjectile; +import com.minelittlepony.unicopia.redux.util.projectile.ITossableItem; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/RacingCloudEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/RacingCloudEntity.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/entity/RacingCloudEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/RacingCloudEntity.java index d7687362..3227806f 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/RacingCloudEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/RacingCloudEntity.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; +import com.minelittlepony.unicopia.core.EquinePredicates; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/RainbowEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/RainbowEntity.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/entity/RainbowEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/RainbowEntity.java index 937ab43d..7015ad33 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/RainbowEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/RainbowEntity.java @@ -1,7 +1,8 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.UEntities; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.entity.InAnimate; +import com.minelittlepony.unicopia.redux.UEntities; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.packet.EntitySpawnGlobalS2CPacket; @@ -21,7 +22,7 @@ import net.minecraft.world.IWorld; import net.minecraft.world.World; import net.minecraft.world.biome.Biome.SpawnEntry; -public class RainbowEntity extends Entity implements IInAnimate { +public class RainbowEntity extends Entity implements InAnimate { public static final SpawnEntry SPAWN_ENTRY = new SpawnEntry(UEntities.RAINBOW_SPAWNER, 1, 1, 1); diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpearEntity.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/SpearEntity.java index 85ea66a6..e36954d3 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpearEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpearEntity.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.projectile.IAdvancedProjectile; -import com.minelittlepony.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; +import com.minelittlepony.unicopia.redux.util.projectile.IAdvancedProjectile; import net.minecraft.client.network.packet.GameStateChangeS2CPacket; import net.minecraft.enchantment.EnchantmentHelper; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpellbookEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpellbookEntity.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/entity/SpellbookEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/SpellbookEntity.java index 480d4835..72299eda 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpellbookEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpellbookEntity.java @@ -1,7 +1,8 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.item.UItems; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.redux.item.UItems; import net.minecraft.container.Container; import net.minecraft.container.NameableContainerProvider; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpellcastEntity.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/SpellcastEntity.java index b7994baa..226dc00e 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/SpellcastEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/SpellcastEntity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.Optional; import java.util.UUID; @@ -7,15 +7,17 @@ import javax.annotation.Nullable; import org.apache.commons.lang3.StringUtils; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.items.ICastable; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.network.EffectSync; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.entity.InAnimate; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.network.EffectSync; +import com.minelittlepony.unicopia.redux.item.UItems; +import com.minelittlepony.unicopia.redux.magic.ICastable; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -48,7 +50,7 @@ import net.minecraft.world.GameRules; import net.minecraft.world.World; import net.minecraft.world.explosion.Explosion.DestructionType; -public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICaster, IInAnimate { +public class SpellcastEntity extends MobEntityWithAi implements IMagicals, ICaster, InAnimate { private LivingEntity owner = null; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/WildCloudEntity.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/WildCloudEntity.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/entity/WildCloudEntity.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/WildCloudEntity.java index 78c026bb..aadcbe29 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/WildCloudEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/WildCloudEntity.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.entity; +package com.minelittlepony.unicopia.redux.entity; import java.util.Iterator; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.UEntities; +import com.minelittlepony.unicopia.redux.UEntities; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityData; diff --git a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/FollowCasterGoal.java b/src/main/java/com/minelittlepony/unicopia/redux/entity/ai/FollowCasterGoal.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/entity/capabilities/FollowCasterGoal.java rename to src/main/java/com/minelittlepony/unicopia/redux/entity/ai/FollowCasterGoal.java index 36408df9..0854cc9a 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/capabilities/FollowCasterGoal.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/entity/ai/FollowCasterGoal.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.entity.capabilities; +package com.minelittlepony.unicopia.redux.entity.ai; import java.util.EnumSet; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.ICaster; import net.minecraft.block.BlockState; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/AlicornAmuletItem.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/AlicornAmuletItem.java index db090ab6..03f98ec2 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AlicornAmuletItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/AlicornAmuletItem.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import java.util.UUID; @@ -6,21 +6,20 @@ import java.util.UUID; import javax.annotation.Nullable; import com.google.common.collect.Multimap; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.ducks.IItemEntity; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.items.IDependable; -import com.minelittlepony.unicopia.world.UWorld; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.VecHelper; -import com.minelittlepony.unicopia.entity.capabilities.ItemEntityCapabilities; - +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.ducks.IItemEntity; +import com.minelittlepony.unicopia.core.entity.ItemEntityCapabilities; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.IDependable; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.redux.UWorld; import net.minecraft.util.ChatUtil; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.Entity; import net.minecraft.entity.EquipmentSlot; @@ -120,7 +119,7 @@ public class AlicornAmuletItem extends ArmorItem implements IDependable, ItemEnt @Override public void appendTooltip(ItemStack stack, @Nullable World world, List tooltip, TooltipContext context) { - IPlayer iplayer = InteractionManager.instance().getIPlayer(); + IPlayer iplayer = SpeciesList.instance().getPlayer(MinecraftClient.getInstance().player); if (iplayer != null) { int attachedTime = iplayer.getInventory().getTicksAttached(this); diff --git a/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/AppleItem.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/item/AppleItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/AppleItem.java index b0fb257b..4b4b8ae1 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/AppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/AppleItem.java @@ -1,12 +1,13 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.ducks.IItemEntity; -import com.minelittlepony.unicopia.entity.capabilities.ItemEntityCapabilities; -import com.minelittlepony.unicopia.item.consumables.Toxic; -import com.minelittlepony.unicopia.item.consumables.Toxicity; +import com.minelittlepony.unicopia.core.ducks.IItemEntity; +import com.minelittlepony.unicopia.core.entity.ItemEntityCapabilities; +import com.minelittlepony.unicopia.redux.toxin.Toxic; +import com.minelittlepony.unicopia.redux.toxin.Toxicity; + import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.EntityType; import net.minecraft.entity.ItemEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/BagOfHoldingItem.java similarity index 86% rename from src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/BagOfHoldingItem.java index a4e8a63a..fe111777 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/BagOfHoldingItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/BagOfHoldingItem.java @@ -1,16 +1,16 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.UContainers; -import com.minelittlepony.unicopia.inventory.gui.InventoryOfHolding; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.items.IMagicalItem; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.IMagicalItem; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.redux.UContainers; +import com.minelittlepony.unicopia.redux.container.BagOfHoldingInventory; import net.fabricmc.fabric.api.container.ContainerProviderRegistry; import net.minecraft.block.entity.BlockEntity; @@ -49,7 +49,7 @@ public class BagOfHoldingItem extends Item implements IMagicalItem { Map counts = new HashMap<>(); - InventoryOfHolding.iterateContents(stack, (i, itemstack) -> { + BagOfHoldingInventory.iterateContents(stack, (i, itemstack) -> { Text name = itemstack.getName(); counts.put(name, counts.getOrDefault(name, 0) + itemstack.getCount()); @@ -81,7 +81,7 @@ public class BagOfHoldingItem extends Item implements IMagicalItem { BlockEntity tile = world.getBlockEntity(pos); if (tile instanceof Inventory) { - InventoryOfHolding inventory = InventoryOfHolding.getInventoryFromStack(stack); + BagOfHoldingInventory inventory = BagOfHoldingInventory.getInventoryFromStack(stack); inventory.addBlockEntity(world, pos, (BlockEntity & Inventory)tile); inventory.writeTostack(stack); @@ -95,7 +95,7 @@ public class BagOfHoldingItem extends Item implements IMagicalItem { List itemsAround = world.getEntities(player, box, EquinePredicates.ITEMS); if (itemsAround.size() > 0) { - InventoryOfHolding inventory = InventoryOfHolding.getInventoryFromStack(stack); + BagOfHoldingInventory inventory = BagOfHoldingInventory.getInventoryFromStack(stack); inventory.addItem((ItemEntity)itemsAround.get(0)); inventory.writeTostack(stack); diff --git a/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/CloudPlacerItem.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/CloudPlacerItem.java index ad1609bd..f688fd9b 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/CloudPlacerItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/CloudPlacerItem.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.entity.CloudEntity; -import com.minelittlepony.unicopia.magic.items.IDispensable; +import com.minelittlepony.unicopia.core.magic.IDispensable; +import com.minelittlepony.unicopia.redux.entity.CloudEntity; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.EntityType; diff --git a/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/CursedMagicGemItem.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/CursedMagicGemItem.java index 06ad1366..6e66f309 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/CursedMagicGemItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/CursedMagicGemItem.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.spells.CastResult; -import com.minelittlepony.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; diff --git a/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/EnchantedStaffItem.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/EnchantedStaffItem.java index f28c00ac..91b0ff6c 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/EnchantedStaffItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/EnchantedStaffItem.java @@ -1,19 +1,19 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAffine; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.projectile.ITossableItem; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CasterUtils; +import com.minelittlepony.unicopia.core.magic.IAffine; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; +import com.minelittlepony.unicopia.redux.util.projectile.ITossableItem; import net.minecraft.block.BlockState; import net.minecraft.client.item.TooltipContext; diff --git a/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/ExtendedShearsItem.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/ExtendedShearsItem.java index e1379730..2352cf11 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ExtendedShearsItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/ExtendedShearsItem.java @@ -1,8 +1,9 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.items.IDispensable; +import com.minelittlepony.unicopia.core.magic.IDispensable; + import net.minecraft.block.BlockState; import net.minecraft.block.DispenserBlock; import net.minecraft.block.dispenser.DispenserBehavior; diff --git a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/MagicGemItem.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/MagicGemItem.java index 4cd4e40d..25297eb9 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/MagicGemItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/MagicGemItem.java @@ -1,19 +1,19 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.unicopia.magic.items.ICastable; -import com.minelittlepony.unicopia.magic.spells.CastResult; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.IUseable; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; +import com.minelittlepony.unicopia.redux.magic.ICastable; import net.minecraft.block.DispenserBlock; import net.minecraft.client.item.TooltipContext; diff --git a/src/main/java/com/minelittlepony/unicopia/item/MossItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/MossItem.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/item/MossItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/MossItem.java index e326d4e6..916eb4db 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/MossItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/MossItem.java @@ -1,11 +1,12 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.item.consumables.ToxicItem; -import com.minelittlepony.unicopia.item.consumables.Toxicity; -import com.minelittlepony.util.collection.ReversableStateMapList; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.util.collection.ReversableStateMapList; +import com.minelittlepony.unicopia.redux.toxin.ToxicItem; +import com.minelittlepony.unicopia.redux.toxin.Toxicity; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; diff --git a/src/main/java/com/minelittlepony/unicopia/item/PredicatedBlockItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/PredicatedBlockItem.java similarity index 96% rename from src/main/java/com/minelittlepony/unicopia/item/PredicatedBlockItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/PredicatedBlockItem.java index d1812c1a..7d320d72 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/PredicatedBlockItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/PredicatedBlockItem.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.function.Predicate; diff --git a/src/main/java/com/minelittlepony/unicopia/item/RottenAppleItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/RottenAppleItem.java similarity index 80% rename from src/main/java/com/minelittlepony/unicopia/item/RottenAppleItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/RottenAppleItem.java index 19ffd0cd..16390a03 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/RottenAppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/RottenAppleItem.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.ducks.IItemEntity; +import com.minelittlepony.unicopia.core.ducks.IItemEntity; import net.fabricmc.fabric.api.registry.FuelRegistry; import net.minecraft.item.FoodComponent; diff --git a/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/RottenTomatoItem.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/RottenTomatoItem.java index 2e4c70ab..c942bfd0 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/RottenTomatoItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/RottenTomatoItem.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.projectile.ITossableItem; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.redux.util.projectile.ITossableItem; import net.minecraft.block.BlockState; import net.minecraft.block.Material; diff --git a/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/SpearItem.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/item/SpearItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/SpearItem.java index f668a232..cdf5b2f3 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SpearItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/SpearItem.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.SpearEntity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.projectile.ITossableItem; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.redux.entity.SpearEntity; +import com.minelittlepony.unicopia.redux.util.projectile.IAdvancedProjectile; +import com.minelittlepony.unicopia.redux.util.projectile.ITossableItem; import net.minecraft.block.BlockState; import net.minecraft.entity.EquipmentSlot; diff --git a/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/SpellbookItem.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/SpellbookItem.java index e7994dd1..c9d1088a 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SpellbookItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/SpellbookItem.java @@ -1,11 +1,11 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.EquinePredicates; -import com.minelittlepony.unicopia.UEntities; -import com.minelittlepony.unicopia.entity.SpellbookEntity; -import com.minelittlepony.unicopia.magic.items.IDispensable; +import com.minelittlepony.unicopia.core.EquinePredicates; +import com.minelittlepony.unicopia.core.magic.IDispensable; +import com.minelittlepony.unicopia.redux.UEntities; +import com.minelittlepony.unicopia.redux.entity.SpellbookEntity; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/StaffItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/StaffItem.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/item/StaffItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/StaffItem.java index 424ec840..251007c9 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/StaffItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/StaffItem.java @@ -1,11 +1,12 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import java.util.UUID; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.minelittlepony.unicopia.EquinePredicates; +import com.minelittlepony.unicopia.core.EquinePredicates; + import net.minecraft.block.Blocks; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.EntityDimensions; diff --git a/src/main/java/com/minelittlepony/unicopia/item/StickItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/StickItem.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/item/StickItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/StickItem.java index 6888f657..2e97ff8d 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/StickItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/StickItem.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.UBlocks; +import com.minelittlepony.unicopia.redux.block.UBlocks; import net.minecraft.advancement.criterion.Criterions; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/SugaryItem.java similarity index 87% rename from src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/SugaryItem.java index 76f9a05c..5468bbaf 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/SugaryItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/SugaryItem.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.SpeciesList; +import com.minelittlepony.unicopia.core.SpeciesList; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/TomatoItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/TomatoItem.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/item/TomatoItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/TomatoItem.java index 3d463bef..5c31b30d 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/TomatoItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/TomatoItem.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.effect.StatusEffects; diff --git a/src/main/java/com/minelittlepony/unicopia/item/TomatoSeedsItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/TomatoSeedsItem.java similarity index 86% rename from src/main/java/com/minelittlepony/unicopia/item/TomatoSeedsItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/TomatoSeedsItem.java index 4843b11e..6537701d 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/TomatoSeedsItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/TomatoSeedsItem.java @@ -1,7 +1,7 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.block.StickBlock; +import com.minelittlepony.unicopia.redux.block.StickBlock; +import com.minelittlepony.unicopia.redux.block.UBlocks; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/minelittlepony/unicopia/item/UItems.java b/src/main/java/com/minelittlepony/unicopia/redux/item/UItems.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/item/UItems.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/UItems.java index 4beeb655..2bf7793c 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/UItems.java @@ -1,19 +1,18 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; -import com.minelittlepony.unicopia.item.consumables.DynamicToxicItem; -import com.minelittlepony.unicopia.item.consumables.ToxicBlockItem; -import com.minelittlepony.unicopia.item.consumables.ToxicItem; -import com.minelittlepony.unicopia.item.consumables.Toxicity; -import com.minelittlepony.unicopia.item.consumables.Toxin; -import com.minelittlepony.unicopia.item.consumables.DynamicToxicBlockItem; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.magic.spells.SpellScorch; +import com.minelittlepony.unicopia.redux.UEntities; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.magic.spells.ScorchSpell; +import com.minelittlepony.unicopia.redux.toxin.DynamicToxicBlockItem; +import com.minelittlepony.unicopia.redux.toxin.DynamicToxicItem; +import com.minelittlepony.unicopia.redux.toxin.ToxicBlockItem; +import com.minelittlepony.unicopia.redux.toxin.ToxicItem; +import com.minelittlepony.unicopia.redux.toxin.Toxicity; +import com.minelittlepony.unicopia.redux.toxin.Toxin; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.color.item.ItemColors; import net.minecraft.item.AliasedBlockItem; import net.minecraft.item.BlockItem; import net.minecraft.item.FoodComponent; @@ -23,12 +22,9 @@ import net.minecraft.item.TallBlockItem; import net.minecraft.util.UseAction; import net.minecraft.util.registry.Registry; -import static com.minelittlepony.unicopia.EquinePredicates.*; +import static com.minelittlepony.unicopia.core.EquinePredicates.*; -import com.minelittlepony.unicopia.ServerInteractionManager; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.UEntities; -import com.minelittlepony.unicopia.USounds; +import com.minelittlepony.unicopia.core.USounds; public class UItems { @@ -90,7 +86,7 @@ public class UItems { public static final SpellbookItem spellbook = register(new SpellbookItem(), "spellbook"); public static final Item staff_meadow_brook = register(new StaffItem(new Item.Settings().maxCount(1).maxDamage(2)), "staff_meadow_brook"); - public static final Item staff_remembrance = register(new EnchantedStaffItem(new Item.Settings(), new SpellScorch()), "staff_remembrance"); + public static final Item staff_remembrance = register(new EnchantedStaffItem(new Item.Settings(), new ScorchSpell()), "staff_remembrance"); public static final Item spear = register(new SpearItem(new Item.Settings().maxCount(1).maxDamage(500)), "spear"); @@ -160,20 +156,6 @@ public class UItems { } public static void bootstrap() { - - if (ServerInteractionManager.isClientSide()) { - //BuildInTexturesBakery.getBuiltInTextures().add(new Identifier(Unicopia.MODID, "items/empty_slot_gem")); - - ItemColors registry = null; - registry.register((stack, tint) -> { - if (MAGI.test(MinecraftClient.getInstance().player)) { - return SpellRegistry.instance().getSpellTintFromStack(stack); - } - - return 0xffffff; - }, spell, curse); - } - // FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(zap_apple), new ItemStack(cooked_zap_apple), 0.1F); // FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(juice), new ItemStack(burned_juice), 0); // FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(cuccoon), new ItemStack(chitin_shell), 0.3F); diff --git a/src/main/java/com/minelittlepony/unicopia/item/URecord.java b/src/main/java/com/minelittlepony/unicopia/redux/item/URecord.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/item/URecord.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/URecord.java index a411218b..dbc38e6b 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/URecord.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/URecord.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; diff --git a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java b/src/main/java/com/minelittlepony/unicopia/redux/item/ZapAppleItem.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/item/ZapAppleItem.java index c9019444..259c83fb 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/item/ZapAppleItem.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.item; +package com.minelittlepony.unicopia.redux.item; import java.util.List; import com.google.common.collect.Lists; -import com.minelittlepony.unicopia.item.consumables.Toxicity; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.VecHelper; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.redux.toxin.Toxicity; import net.minecraft.entity.Entity; import net.minecraft.entity.LightningEntity; @@ -35,7 +35,7 @@ import net.minecraft.world.World; public class ZapAppleItem extends AppleItem { private static final List ALIASABLE_ITEMS = Lists.newArrayList( - UItems.red_apple, + UItems.VanillaOverrides.red_apple, UItems.green_apple, UItems.sweet_apple, UItems.sour_apple, diff --git a/src/main/java/com/minelittlepony/unicopia/magic/items/ICastable.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/ICastable.java similarity index 79% rename from src/main/java/com/minelittlepony/unicopia/magic/items/ICastable.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/ICastable.java index f82dd88f..2a2f6739 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/items/ICastable.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/ICastable.java @@ -1,10 +1,12 @@ -package com.minelittlepony.unicopia.magic.items; +package com.minelittlepony.unicopia.redux.magic; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.spells.CastResult; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IDispensable; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.IMagicalItem; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/ITossedEffect.java similarity index 77% rename from src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/ITossedEffect.java index c5f6da96..c6a77e2e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/ITossedEffect.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/ITossedEffect.java @@ -1,12 +1,15 @@ -package com.minelittlepony.unicopia.magic; +package com.minelittlepony.unicopia.redux.magic; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.item.UItems; -import com.minelittlepony.unicopia.magic.spells.SpellRegistry; -import com.minelittlepony.unicopia.projectile.IAdvancedProjectile; -import com.minelittlepony.unicopia.projectile.ITossable; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.core.util.projectile.ITossable; +import com.minelittlepony.unicopia.redux.entity.ProjectileEntity; +import com.minelittlepony.unicopia.redux.item.UItems; +import com.minelittlepony.unicopia.redux.util.projectile.IAdvancedProjectile; import net.minecraft.entity.Entity; import net.minecraft.item.Item; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractAttachableSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AbstractAttachableSpell.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractAttachableSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AbstractAttachableSpell.java index eed9f9d1..e65a3058 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/AbstractAttachableSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AbstractAttachableSpell.java @@ -1,12 +1,13 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.UUID; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.minecraft.entity.Entity; import net.minecraft.nbt.CompoundTag; @@ -16,7 +17,7 @@ import net.minecraft.util.math.Box; public abstract class AbstractAttachableSpell extends AbstractSpell { - boolean searching = true; + protected boolean searching = true; @Nullable private UUID targettedEntityId; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/AwkwardSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AwkwardSpell.java similarity index 84% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/AwkwardSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AwkwardSpell.java index 46cc173e..92502441 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/AwkwardSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/AwkwardSpell.java @@ -1,16 +1,18 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.CasterUtils; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IUseable; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/ChangelingTrapSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChangelingTrapSpell.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/ChangelingTrapSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChangelingTrapSpell.java index 2d207f15..2f0a9eb6 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/ChangelingTrapSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChangelingTrapSpell.java @@ -1,18 +1,19 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.Optional; -import com.minelittlepony.unicopia.UBlocks; -import com.minelittlepony.unicopia.UEntities; -import com.minelittlepony.unicopia.USounds; -import com.minelittlepony.unicopia.entity.CuccoonEntity; -import com.minelittlepony.unicopia.entity.IMagicals; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.util.WorldEvent; +import com.minelittlepony.unicopia.core.USounds; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CasterUtils; +import com.minelittlepony.unicopia.core.magic.IAttachedEffect; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.WorldEvent; +import com.minelittlepony.unicopia.redux.UEntities; +import com.minelittlepony.unicopia.redux.block.UBlocks; +import com.minelittlepony.unicopia.redux.entity.CuccoonEntity; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/ChargingSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChargingSpell.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/ChargingSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChargingSpell.java index 90c97a5f..4a54a7fe 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/ChargingSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ChargingSpell.java @@ -1,10 +1,10 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Line; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Line; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/DarknessSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DarknessSpell.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/DarknessSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DarknessSpell.java index dcf20e78..a458ad60 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/DarknessSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DarknessSpell.java @@ -1,17 +1,18 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.Random; import java.util.function.Consumer; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CasterUtils; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.spell.ShieldSpell; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.minecraft.block.BlockState; import net.minecraft.block.Fertilizable; @@ -206,7 +207,7 @@ public class DarknessSpell extends AbstractAttachableSpell { public boolean isAreaOccupied(ICaster source, Vec3d pos) { if (source.getWorld().isAir(new BlockPos(pos).down())) { return source.findAllSpells().anyMatch(spell -> { - SpellShield effect = spell.getEffect(SpellShield.class, false); + ShieldSpell effect = spell.getEffect(ShieldSpell.class, false); if (effect != null) { return pos.distanceTo(spell.getOriginVector()) <= effect.getDrawDropOffRange(spell); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDisguise.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DisguiseSpell.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDisguise.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DisguiseSpell.java index feedd419..18537122 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDisguise.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/DisguiseSpell.java @@ -1,28 +1,30 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.UUID; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.InteractionManager; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.ability.IFlyingPredicate; -import com.minelittlepony.unicopia.ability.IHeightPredicate; -import com.minelittlepony.unicopia.entity.IOwned; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.CasterUtils; -import com.minelittlepony.unicopia.magic.IAttachedEffect; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.ISuppressable; -import com.minelittlepony.unicopia.mixin.MixinEntity; -import com.minelittlepony.unicopia.projectile.ProjectileUtil; +import com.minelittlepony.unicopia.core.InteractionManager; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.ability.IFlyingPredicate; +import com.minelittlepony.unicopia.core.ability.IHeightPredicate; +import com.minelittlepony.unicopia.core.entity.Owned; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CasterUtils; +import com.minelittlepony.unicopia.core.magic.IAttachedEffect; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.ISuppressable; +import com.minelittlepony.unicopia.core.mixin.MixinEntity; +import com.minelittlepony.unicopia.core.util.projectile.ProjectileUtil; import com.mojang.authlib.GameProfile; +import net.minecraft.block.entity.SkullBlockEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.EquipmentSlot; @@ -37,6 +39,7 @@ import net.minecraft.entity.mob.ShulkerEntity; import net.minecraft.entity.mob.VexEntity; import net.minecraft.entity.passive.TameableEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.projectile.ProjectileEntity; import net.minecraft.entity.projectile.ShulkerBulletEntity; import net.minecraft.entity.vehicle.MinecartEntity; import net.minecraft.item.ItemStack; @@ -44,7 +47,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.util.UseAction; import net.minecraft.util.math.MathHelper; -public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISuppressable, IFlyingPredicate, IHeightPredicate { +public class DisguiseSpell extends AbstractSpell implements IAttachedEffect, ISuppressable, IFlyingPredicate, IHeightPredicate { @Nonnull private String entityId = ""; @@ -97,7 +100,7 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu return entity; } - public SpellDisguise setDisguise(@Nullable Entity entity) { + public DisguiseSpell setDisguise(@Nullable Entity entity) { if (entity == this.entity) { entity = null; } @@ -167,7 +170,7 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu nbt.getUuid("playerId"), nbt.getString("playerName") ), source); - new Thread(() -> createPlayer(nbt, SkullBlockEntity.updateGameProfile(new GameProfile( + new Thread(() -> createPlayer(nbt, SkullBlockEntity.loadProperties(new GameProfile( null, nbt.getString("playerName") )), source)).start(); @@ -195,6 +198,11 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu } } + @Override + public boolean handleProjectileImpact(ProjectileEntity projectile) { + return getDisguise() == projectile; + } + protected void copyBaseAttributes(LivingEntity from, Entity to) { // Set first because position calculations rely on it @@ -275,7 +283,7 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu } if (to instanceof RangedAttackMob) { - ItemStack activeItem = from.getActiveItemStack(); + ItemStack activeItem = from.getActiveItem(); ((RangedAttackMob)to).setSwingingArms(!activeItem.isEmpty() && activeItem.getUseAction() == UseAction.BOW); } @@ -394,8 +402,8 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu player.setInvisible(true); source.getOwner().setInvisible(true); - if (entity instanceof IOwned) { - IOwned.cast(entity).setOwner(player.getOwner()); + if (entity instanceof Owned) { + Owned.cast(entity).setOwner(player.getOwner()); } if (entity instanceof PlayerEntity) { @@ -473,8 +481,8 @@ public class SpellDisguise extends AbstractSpell implements IAttachedEffect, ISu return false; } - if (entity instanceof IOwned) { - IPlayer iplayer = SpeciesList.instance().getPlayer(((IOwned)entity).getOwner()); + if (entity instanceof Owned) { + IPlayer iplayer = SpeciesList.instance().getPlayer(((Owned)entity).getOwner()); return iplayer != null && iplayer.getSpecies().canFly(); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDrake.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FaithfulAssistantSpell.java similarity index 83% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDrake.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FaithfulAssistantSpell.java index 597cfde2..a8f72b95 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellDrake.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FaithfulAssistantSpell.java @@ -1,17 +1,19 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.entity.capabilities.FollowCasterGoal; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.spell.SpellRegistry; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; +import com.minelittlepony.unicopia.redux.entity.ai.FollowCasterGoal; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.Box; -public class SpellDrake extends AbstractSpell { +public class FaithfulAssistantSpell extends AbstractSpell { private static final Box EFFECT_BOUNDS = new Box(-2, -2, -2, 2, 2, 2); @@ -77,7 +79,7 @@ public class SpellDrake extends AbstractSpell { source.getWorld().getEntities(source.getEntity(), bb, e -> e instanceof SpellcastEntity).stream() .map(i -> (SpellcastEntity)i) - .filter(i -> i.hasEffect() && !(i.getEffect() instanceof SpellDrake)) + .filter(i -> i.hasEffect() && !(i.getEffect() instanceof FaithfulAssistantSpell)) .findFirst().ifPresent(i -> { piggyBackSpell = i.getEffect().copy(); piggyBackSpell.onPlaced(source); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFlame.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FlameSpell.java similarity index 51% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFlame.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FlameSpell.java index a0ed4d5b..00a9d18e 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellFlame.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/FlameSpell.java @@ -1,15 +1,16 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IHeldEffect; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.init.SoundEvents; -import net.minecraft.util.DamageSource; +import net.minecraft.sound.SoundEvents; -public class SpellFlame extends AbstractSpell implements IHeldEffect { +public class FlameSpell extends AbstractSpell implements IHeldEffect { @Override public String getName() { @@ -39,11 +40,10 @@ public class SpellFlame extends AbstractSpell implements IHeldEffect { public void updateInHand(IPlayer caster, Affinity affinity) { PlayerEntity player = caster.getOwner(); - if (player.ticksExisted % 15 == 0) { - player.attackEntityFrom(DamageSource.ON_FIRE, 1); + if (player.age % 15 == 0) { + player.damage(DamageSource.ON_FIRE, 1); player.playSound(SoundEvents.BLOCK_FIRE_AMBIENT, 0.5F, 1); - - player.setFire(1); + player.setOnFireFor(1); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellLight.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/GlowingSpell.java similarity index 81% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellLight.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/GlowingSpell.java index 78584cd7..b6352f8d 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellLight.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/GlowingSpell.java @@ -1,21 +1,22 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IHeldEffect; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.GenericSpell; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IHeldEffect; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; -public class SpellLight extends GenericSpell implements IHeldEffect { +public class GlowingSpell extends GenericSpell implements IHeldEffect { private BlockPos lastPos; private ICaster source; - public SpellLight() { + public GlowingSpell() { super("light", 0xF7FACB, Affinity.GOOD); } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellIce.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/IceSpell.java similarity index 55% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellIce.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/IceSpell.java index 4554ce09..e25c6250 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellIce.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/IceSpell.java @@ -1,43 +1,46 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.UMaterials; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IDispenceable; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.VecHelper; -import com.minelittlepony.util.collection.IStateMapping; -import com.minelittlepony.util.collection.StateMapList; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IDispenceable; +import com.minelittlepony.unicopia.core.magic.IUseable; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.VecHelper; +import com.minelittlepony.unicopia.core.util.collection.IStateMapping; +import com.minelittlepony.unicopia.core.util.collection.StateMapList; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.UMaterials; import net.minecraft.block.Block; -import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockLeaves; -import net.minecraft.block.BlockRedstoneWire; -import net.minecraft.block.BlockSnow; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockState; -import net.minecraft.dispenser.IBlockSource; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.Material; +import net.minecraft.block.PlantBlock; +import net.minecraft.block.RedstoneWireBlock; +import net.minecraft.block.SnowBlock; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityTNTPrimed; +import net.minecraft.entity.TntEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUsageContext; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.tag.BlockTags; +import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.Direction; -import net.minecraft.util.EnumParticleTypes; +import net.minecraft.util.math.Direction; import net.minecraft.world.World; -public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { +public class IceSpell extends AbstractSpell.RangedAreaSpell implements IUseable, IDispenceable { public final StateMapList affected = new StateMapList(); - public SpellIce() { + public IceSpell() { affected.add(IStateMapping.build( s -> s.getMaterial() == Material.WATER, s -> Blocks.ICE.getDefaultState())); @@ -45,17 +48,17 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, s -> s.getMaterial() == Material.LAVA, s -> Blocks.OBSIDIAN.getDefaultState())); affected.add(IStateMapping.build( - s -> s.getBlock() == Blocks.SNOW_LAYER, + s -> s.getBlock() == Blocks.SNOW, s -> { - s = s.cycleProperty(BlockSnow.LAYERS); - if (s.getValue(BlockSnow.LAYERS) >= 7) { + s = s.cycle(SnowBlock.LAYERS); + if (s.get(SnowBlock.LAYERS) >= 7) { return Blocks.SNOW.getDefaultState(); } return s; })); affected.replaceBlock(Blocks.FIRE, Blocks.AIR); - affected.setProperty(Blocks.REDSTONE_WIRE, BlockRedstoneWire.POWER, 0); + affected.setProperty(Blocks.REDSTONE_WIRE, RedstoneWireBlock.POWER, 0); } private final int rad = 3; @@ -86,16 +89,16 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, } @Override - public CastResult onDispenced(BlockPos pos, Direction facing, IBlockSource source, Affinity affinity) { + public CastResult onDispenced(BlockPos pos, Direction facing, BlockPointer source, Affinity affinity) { return applyBlocks(null, source.getWorld(), pos.offset(facing, rad)) ? CastResult.NONE : CastResult.DEFAULT; } @Override - public CastResult onUse(ItemStack stack, Affinity affinity, PlayerEntity player, World world, BlockPos pos, Direction side, float hitX, float hitY, float hitZ) { - if (player != null && player.isSneaking()) { - applyBlockSingle(world, pos); + public CastResult onUse(ItemUsageContext context, Affinity affinity) { + if (context.getPlayer() != null && context.getPlayer().isSneaking()) { + applyBlockSingle(context.getPlayer(), context.getWorld(), context.getBlockPos()); } else { - applyBlocks(player, world, pos); + applyBlocks(context.getPlayer(), context.getWorld(), context.getBlockPos()); } return CastResult.DEFAULT; @@ -113,7 +116,7 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, private boolean applyBlocks(PlayerEntity owner, World world, BlockPos pos) { for (BlockPos i : PosHelper.getAllInRegionMutable(pos, effect_range)) { - applyBlockSingle(world, i); + applyBlockSingle(owner, world, i); } return applyEntities(owner, world, pos); @@ -126,19 +129,19 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, } protected boolean applyEntitySingle(PlayerEntity owner, Entity e) { - if (e instanceof EntityTNTPrimed) { - e.setDead(); - e.getEntityWorld().setBlockState(e.getPosition(), Blocks.TNT.getDefaultState()); - } else if (e.isBurning()) { + if (e instanceof TntEntity) { + e.remove(); + e.getEntityWorld().setBlockState(e.getBlockPos(), Blocks.TNT.getDefaultState()); + } else if (e.isOnFire()) { e.extinguish(); } else { - e.attackEntityFrom(MagicalDamageSource.causePlayerDamage("cold", owner), 2); + e.damage(MagicalDamageSource.causePlayerDamage("cold", owner), 2); } return true; } - private void applyBlockSingle(World world, BlockPos pos) { + private void applyBlockSingle(PlayerEntity owner, World world, BlockPos pos) { BlockState state = world.getBlockState(pos); Block id = state.getBlock(); @@ -146,17 +149,17 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, if (!state.equals(converted)) { world.setBlockState(pos, converted, 3); - } else if (state.getMaterial() != UMaterials.cloud && state.isSideSolid(world, pos, Direction.UP) + } else if (state.getMaterial() != UMaterials.cloud && world.doesBlockHaveSolidTopSurface(pos, owner) || (id == Blocks.SNOW) - || (id instanceof BlockLeaves)) { + || state.matches(BlockTags.LEAVES)) { incrementIce(world, pos.up()); - } else if (state.getMaterial() == Material.ICE && world.rand.nextInt(10) == 0) { + } else if (state.getMaterial() == Material.ICE && world.random.nextInt(10) == 0) { if (isSurroundedByIce(world, pos)) { world.setBlockState(pos, Blocks.PACKED_ICE.getDefaultState()); } } - world.spawnParticle(EnumParticleTypes.WATER_SPLASH, pos.getX() + world.rand.nextFloat(), pos.getY() + 1, pos.getZ() + world.rand.nextFloat(), 0, 0, 0); + world.addParticle(ParticleTypes.SPLASH, pos.getX() + world.random.nextFloat(), pos.getY() + 1, pos.getZ() + world.random.nextFloat(), 0, 0, 0); } public static boolean isSurroundedByIce(World w, BlockPos pos) { @@ -169,8 +172,8 @@ public class SpellIce extends AbstractSpell.RangedAreaSpell implements IUseable, BlockState state = world.getBlockState(pos); Block id = state.getBlock(); - if (id == Blocks.AIR || (id instanceof BlockBush)) { - world.setBlockState(pos, Blocks.SNOW_LAYER.getDefaultState(), 3); + if (id == Blocks.AIR || (id instanceof PlantBlock)) { + world.setBlockState(pos, Blocks.SNOW.getDefaultState(), 3); } } } diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellInferno.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/InfernoSpell.java similarity index 64% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellInferno.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/InfernoSpell.java index 092ebdfe..ab39d693 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellInferno.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/InfernoSpell.java @@ -1,33 +1,33 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.util.MagicalDamageSource; -import com.minelittlepony.util.collection.IStateMapping; -import com.minelittlepony.util.collection.StateMapList; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.spell.FireSpell; +import com.minelittlepony.unicopia.core.util.MagicalDamageSource; +import com.minelittlepony.unicopia.core.util.collection.IStateMapping; +import com.minelittlepony.unicopia.core.util.collection.StateMapList; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; -import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockOre; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.BlockState; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.Material; +import net.minecraft.block.OreBlock; +import net.minecraft.block.PlantBlock; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.item.ItemUsageContext; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -public class SpellInferno extends SpellFire { +public class InfernoSpell extends FireSpell { public final StateMapList hellFireAffected = new StateMapList(); - public SpellInferno() { + public InfernoSpell() { hellFireAffected.add(IStateMapping.build( s -> s.getBlock() == Blocks.GRASS || s.getBlock() == Blocks.DIRT || s.getBlock() == Blocks.STONE, s -> Blocks.NETHERRACK.getDefaultState())); @@ -40,12 +40,12 @@ public class SpellInferno extends SpellFire { s -> Blocks.OBSIDIAN.getDefaultState())); hellFireAffected.add(IStateMapping.build( - s -> s.getBlock() instanceof BlockBush, + s -> s.getBlock() instanceof PlantBlock, s -> Blocks.NETHER_WART.getDefaultState())); hellFireAffected.add(IStateMapping.build( - s -> (s.getBlock() != Blocks.QUARTZ_ORE) && (s.getBlock() instanceof BlockOre), - s -> Blocks.QUARTZ_ORE.getDefaultState())); + s -> (s.getBlock() != Blocks.NETHER_QUARTZ_ORE) && (s.getBlock() instanceof OreBlock), + s -> Blocks.NETHER_QUARTZ_ORE.getDefaultState())); } @Override @@ -64,7 +64,7 @@ public class SpellInferno extends SpellFire { } @Override - public CastResult onUse(ItemStack stack, Affinity affinity, PlayerEntity player, World world, BlockPos pos, Direction side, float hitX, float hitY, float hitZ) { + public CastResult onUse(ItemUsageContext context, Affinity affinity) { return CastResult.PLACE; } @@ -79,7 +79,7 @@ public class SpellInferno extends SpellFire { Vec3d origin = source.getOriginVector(); for (int i = 0; i < radius; i++) { - BlockPos pos = new BlockPos(shape.computePoint(w.rand).add(origin)); + BlockPos pos = new BlockPos(shape.computePoint(w.random).add(origin)); BlockState state = w.getBlockState(pos); BlockState newState = hellFireAffected.getConverted(state); @@ -93,8 +93,8 @@ public class SpellInferno extends SpellFire { shape = new Sphere(false, radius - 1); for (int i = 0; i < radius * 2; i++) { - if (w.rand.nextInt(12) == 0) { - BlockPos pos = new BlockPos(shape.computePoint(w.rand).add(origin)); + if (w.random.nextInt(12) == 0) { + BlockPos pos = new BlockPos(shape.computePoint(w.random).add(origin)); if (!applyBlocks(w, pos)) { applyEntities(source.getOwner(), w, pos); @@ -107,7 +107,7 @@ public class SpellInferno extends SpellFire { @Override protected DamageSource getDamageCause(Entity target, LivingEntity attacker) { - if (attacker != null && attacker.getUniqueID().equals(target.getUniqueID())) { + if (attacker != null && attacker.getUuid().equals(target.getUuid())) { return MagicalDamageSource.causeMobDamage("fire.own", null); } return MagicalDamageSource.causeMobDamage("fire", attacker); diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/PortalSpell.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/PortalSpell.java similarity index 91% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/PortalSpell.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/PortalSpell.java index 4395a219..67802a31 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/PortalSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/PortalSpell.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import java.util.Locale; import java.util.Optional; @@ -6,17 +6,19 @@ import java.util.UUID; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.entity.SpellcastEntity; -import com.minelittlepony.unicopia.entity.capabilities.IPlayer; -import com.minelittlepony.unicopia.entity.IMagicals; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.IMagicEffect; -import com.minelittlepony.unicopia.magic.IUseable; -import com.minelittlepony.util.InbtSerialisable; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.entity.IMagicals; +import com.minelittlepony.unicopia.core.entity.player.IPlayer; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.CastResult; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.IMagicEffect; +import com.minelittlepony.unicopia.core.magic.IUseable; +import com.minelittlepony.unicopia.core.util.InbtSerialisable; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.entity.SpellcastEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellReveal.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/RevealingSpell.java similarity index 71% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellReveal.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/RevealingSpell.java index 38ea0dc5..bc5971b7 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellReveal.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/RevealingSpell.java @@ -1,17 +1,18 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ISuppressable; -import com.minelittlepony.util.shape.IShape; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.magic.AbstractSpell; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.ISuppressable; +import com.minelittlepony.unicopia.core.util.shape.IShape; +import com.minelittlepony.unicopia.core.util.shape.Sphere; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -public class SpellReveal extends AbstractSpell { +public class RevealingSpell extends AbstractSpell { @Override public String getName() { diff --git a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellScorch.java b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ScorchSpell.java similarity index 74% rename from src/main/java/com/minelittlepony/unicopia/magic/spells/SpellScorch.java rename to src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ScorchSpell.java index 1758d22d..7fdbdc73 100644 --- a/src/main/java/com/minelittlepony/unicopia/magic/spells/SpellScorch.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/magic/spells/ScorchSpell.java @@ -1,22 +1,23 @@ -package com.minelittlepony.unicopia.magic.spells; +package com.minelittlepony.unicopia.redux.magic.spells; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.UParticles; -import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.magic.Affinity; -import com.minelittlepony.unicopia.magic.ICaster; -import com.minelittlepony.unicopia.magic.ITossedEffect; -import com.minelittlepony.unicopia.projectile.IAdvancedProjectile; -import com.minelittlepony.util.PosHelper; -import com.minelittlepony.util.shape.Sphere; +import com.minelittlepony.unicopia.core.UParticles; +import com.minelittlepony.unicopia.core.magic.Affinity; +import com.minelittlepony.unicopia.core.magic.ICaster; +import com.minelittlepony.unicopia.core.magic.spell.FireSpell; +import com.minelittlepony.unicopia.core.util.PosHelper; +import com.minelittlepony.unicopia.core.util.shape.Sphere; +import com.minelittlepony.unicopia.redux.entity.ProjectileEntity; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; +import com.minelittlepony.unicopia.redux.util.projectile.IAdvancedProjectile; import net.minecraft.block.BlockState; import net.minecraft.particle.ParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.world.explosion.Explosion.DestructionType; -public class SpellScorch extends SpellFire implements ITossedEffect { +public class ScorchSpell extends FireSpell implements ITossedEffect { @Override public String getName() { diff --git a/src/main/java/com/minelittlepony/unicopia/world/structure/AbstractFeature.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeature.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/world/structure/AbstractFeature.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeature.java index be9442b6..5e73a503 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/structure/AbstractFeature.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeature.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world.structure; +package com.minelittlepony.unicopia.redux.structure; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/unicopia/world/AbstractFeaturesGen.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeaturesGen.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/world/AbstractFeaturesGen.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeaturesGen.java index 00a6c7ee..2c063af1 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/AbstractFeaturesGen.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/AbstractFeaturesGen.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world; +package com.minelittlepony.unicopia.redux.structure; import java.util.Map; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/unicopia/world/structure/CloudDungeon.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/CloudDungeon.java similarity index 76% rename from src/main/java/com/minelittlepony/unicopia/world/structure/CloudDungeon.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/CloudDungeon.java index a51c3d66..fde99bcd 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/structure/CloudDungeon.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/CloudDungeon.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.world.structure; +package com.minelittlepony.unicopia.redux.structure; import java.util.Random; -import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.core.UnicopiaCore; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -14,9 +14,9 @@ import net.minecraft.world.gen.structure.template.TemplateManager; public class CloudDungeon extends TemplateBasedFeature { private static final Identifier[] VARIANTS = new Identifier[] { - new Identifier(Unicopia.MODID, "cloud/temple_small"), - new Identifier(Unicopia.MODID, "cloud/house_small"), - new Identifier(Unicopia.MODID, "cloud/island_small") + new Identifier(UnicopiaCore.MODID, "cloud/temple_small"), + new Identifier(UnicopiaCore.MODID, "cloud/house_small"), + new Identifier(UnicopiaCore.MODID, "cloud/island_small") }; public CloudDungeon() { diff --git a/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/CloudGen.java similarity index 90% rename from src/main/java/com/minelittlepony/unicopia/world/CloudGen.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/CloudGen.java index f9849fc3..f0d30e5e 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/CloudGen.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/CloudGen.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world; +package com.minelittlepony.unicopia.redux.structure; import java.util.Arrays; import java.util.List; @@ -6,9 +6,6 @@ import java.util.Random; import javax.annotation.Nonnull; -import com.minelittlepony.unicopia.world.structure.AbstractFeature; -import com.minelittlepony.unicopia.world.structure.CloudDungeon; - import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biomes; diff --git a/src/main/java/com/minelittlepony/unicopia/world/structure/CustomSaplingGenerator.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/CustomSaplingGenerator.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/world/structure/CustomSaplingGenerator.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/CustomSaplingGenerator.java index ba795979..3b350118 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/structure/CustomSaplingGenerator.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/CustomSaplingGenerator.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world.structure; +package com.minelittlepony.unicopia.redux.structure; import java.util.Random; import javax.annotation.Nullable; diff --git a/src/main/java/com/minelittlepony/unicopia/world/structure/GroundDungeon.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/GroundDungeon.java similarity index 64% rename from src/main/java/com/minelittlepony/unicopia/world/structure/GroundDungeon.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/GroundDungeon.java index 6007f61e..489a516c 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/structure/GroundDungeon.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/GroundDungeon.java @@ -1,8 +1,8 @@ -package com.minelittlepony.unicopia.world.structure; +package com.minelittlepony.unicopia.redux.structure; import java.util.Random; -import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.core.UnicopiaCore; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -13,11 +13,11 @@ import net.minecraft.world.gen.structure.template.TemplateManager; public class GroundDungeon extends TemplateBasedFeature { private static final Identifier[] VARIANTS = new Identifier[] { - new Identifier(Unicopia.MODID, "ground/tower"), - new Identifier(Unicopia.MODID, "ground/temple_with_book"), - new Identifier(Unicopia.MODID, "ground/temple_without_book"), - new Identifier(Unicopia.MODID, "ground/wizard_tower_red"), - new Identifier(Unicopia.MODID, "ground/wizard_tower_blue") + new Identifier(UnicopiaCore.MODID, "ground/tower"), + new Identifier(UnicopiaCore.MODID, "ground/temple_with_book"), + new Identifier(UnicopiaCore.MODID, "ground/temple_without_book"), + new Identifier(UnicopiaCore.MODID, "ground/wizard_tower_red"), + new Identifier(UnicopiaCore.MODID, "ground/wizard_tower_blue") }; public GroundDungeon() { diff --git a/src/main/java/com/minelittlepony/unicopia/world/StructuresGen.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/StructuresGen.java similarity index 89% rename from src/main/java/com/minelittlepony/unicopia/world/StructuresGen.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/StructuresGen.java index 20c7df66..279c5f23 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/StructuresGen.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/StructuresGen.java @@ -1,12 +1,9 @@ -package com.minelittlepony.unicopia.world; +package com.minelittlepony.unicopia.redux.structure; import java.util.Arrays; import java.util.List; import java.util.Random; -import com.minelittlepony.unicopia.world.structure.AbstractFeature; -import com.minelittlepony.unicopia.world.structure.GroundDungeon; - import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biomes; diff --git a/src/main/java/com/minelittlepony/unicopia/world/structure/TemplateBasedFeature.java b/src/main/java/com/minelittlepony/unicopia/redux/structure/TemplateBasedFeature.java similarity index 98% rename from src/main/java/com/minelittlepony/unicopia/world/structure/TemplateBasedFeature.java rename to src/main/java/com/minelittlepony/unicopia/redux/structure/TemplateBasedFeature.java index 4446f254..c53f28a3 100644 --- a/src/main/java/com/minelittlepony/unicopia/world/structure/TemplateBasedFeature.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/structure/TemplateBasedFeature.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.world.structure; +package com.minelittlepony.unicopia.redux.structure; import java.util.Map; import java.util.Random; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicBlockItem.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicBlockItem.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicBlockItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicBlockItem.java index 21e8b6a3..4df04739 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicBlockItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicBlockItem.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import javax.annotation.Nonnull; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicItem.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicItem.java similarity index 93% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicItem.java index a9b0bd27..c45f7efc 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/DynamicToxicItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/DynamicToxicItem.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import javax.annotation.Nonnull; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxic.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxic.java similarity index 70% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/Toxic.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxic.java index 10b5e50e..909e80ea 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxic.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxic.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicBlockItem.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicBlockItem.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicBlockItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicBlockItem.java index 282bf79d..01111269 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicBlockItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicBlockItem.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UEffects; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UEffects; import net.minecraft.block.Block; import net.minecraft.client.item.TooltipContext; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicItem.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicItem.java similarity index 94% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicItem.java index 40971b85..abc337e9 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/ToxicItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/ToxicItem.java @@ -1,12 +1,12 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import java.util.List; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.Race; -import com.minelittlepony.unicopia.SpeciesList; -import com.minelittlepony.unicopia.UEffects; +import com.minelittlepony.unicopia.core.Race; +import com.minelittlepony.unicopia.core.SpeciesList; +import com.minelittlepony.unicopia.core.UEffects; import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxicity.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxicity.java similarity index 97% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/Toxicity.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxicity.java index 17d62823..00f377b0 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxicity.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxicity.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import java.util.Arrays; import java.util.Map; diff --git a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxin.java b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxin.java similarity index 95% rename from src/main/java/com/minelittlepony/unicopia/item/consumables/Toxin.java rename to src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxin.java index 78933ac5..a518f899 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/consumables/Toxin.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/toxin/Toxin.java @@ -1,4 +1,4 @@ -package com.minelittlepony.unicopia.item.consumables; +package com.minelittlepony.unicopia.redux.toxin; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/IAdvancedProjectile.java b/src/main/java/com/minelittlepony/unicopia/redux/util/projectile/IAdvancedProjectile.java similarity index 88% rename from src/main/java/com/minelittlepony/unicopia/projectile/IAdvancedProjectile.java rename to src/main/java/com/minelittlepony/unicopia/redux/util/projectile/IAdvancedProjectile.java index 12241161..420963a1 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/IAdvancedProjectile.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/util/projectile/IAdvancedProjectile.java @@ -1,6 +1,6 @@ -package com.minelittlepony.unicopia.projectile; +package com.minelittlepony.unicopia.redux.util.projectile; -import com.minelittlepony.unicopia.magic.ITossedEffect; +import com.minelittlepony.unicopia.redux.magic.ITossedEffect; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; diff --git a/src/main/java/com/minelittlepony/unicopia/projectile/ITossableItem.java b/src/main/java/com/minelittlepony/unicopia/redux/util/projectile/ITossableItem.java similarity index 92% rename from src/main/java/com/minelittlepony/unicopia/projectile/ITossableItem.java rename to src/main/java/com/minelittlepony/unicopia/redux/util/projectile/ITossableItem.java index 6c588998..e9331e16 100644 --- a/src/main/java/com/minelittlepony/unicopia/projectile/ITossableItem.java +++ b/src/main/java/com/minelittlepony/unicopia/redux/util/projectile/ITossableItem.java @@ -1,9 +1,10 @@ -package com.minelittlepony.unicopia.projectile; +package com.minelittlepony.unicopia.redux.util.projectile; import javax.annotation.Nullable; -import com.minelittlepony.unicopia.entity.ProjectileEntity; -import com.minelittlepony.unicopia.magic.items.IDispensable; +import com.minelittlepony.unicopia.core.magic.IDispensable; +import com.minelittlepony.unicopia.core.util.projectile.ITossable; +import com.minelittlepony.unicopia.redux.entity.ProjectileEntity; import net.minecraft.block.DispenserBlock; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/minelittlepony/util/BasicEasingInterpolator.java b/src/main/java/com/minelittlepony/util/BasicEasingInterpolator.java new file mode 100644 index 00000000..23281dc8 --- /dev/null +++ b/src/main/java/com/minelittlepony/util/BasicEasingInterpolator.java @@ -0,0 +1,52 @@ +package com.minelittlepony.util; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +public class BasicEasingInterpolator implements IInterpolator { + + private static LoadingCache instanceCache = CacheBuilder.newBuilder() + .expireAfterAccess(30, TimeUnit.SECONDS) + .build(CacheLoader.from(BasicEasingInterpolator::new)); + + /** + * Gets or creates a new basic, linear interpolator for the provided id. + */ + public static IInterpolator getInstance(UUID id) { + return instanceCache.getUnchecked(id); + } + + private final Map properties = new HashMap<>(); + + private float getLast(String key, float to) { + if (properties.containsKey(key)) { + return properties.get(key); + } + + return to; + } + + @Override + public float interpolate(String key, float to, float scalingFactor) { + float from = getLast(key, to); + + from += (to - from) / scalingFactor; + + if (Float.isNaN(from) || Float.isInfinite(from)) { + System.err.println("Error: Animation frame for " + key + " is NaN or Infinite."); + from = to; + } + + properties.put(key, from); + + return from; + + } + +} diff --git a/src/main/java/com/minelittlepony/util/IInterpolator.java b/src/main/java/com/minelittlepony/util/IInterpolator.java new file mode 100644 index 00000000..43d46a79 --- /dev/null +++ b/src/main/java/com/minelittlepony/util/IInterpolator.java @@ -0,0 +1,16 @@ +package com.minelittlepony.util; + +/** + * Interpolator function for handling transitions between animation states. + */ +@FunctionalInterface +public interface IInterpolator { + /** + * Interpolates a value between the requested final destination and what it was last. + * + * @param key Identifier to track previous values + * @param to The new values + * @param scalingFactor Scaling factor to control how quickly values change + */ + float interpolate(String key, float to, float scalingFactor); +} diff --git a/src/main/java/com/minelittlepony/util/MathUtil.java b/src/main/java/com/minelittlepony/util/MathUtil.java new file mode 100644 index 00000000..28c5abf0 --- /dev/null +++ b/src/main/java/com/minelittlepony/util/MathUtil.java @@ -0,0 +1,44 @@ +package com.minelittlepony.util; + +import net.minecraft.util.math.MathHelper; + +public class MathUtil { + + public static double clampLimit(double num, double limit) { + return MathHelper.clamp(num, -limit, limit); + } + + public static int mod(int value, int mod) { + value %= mod; + + while (value < 0) value += mod; + + return value; + } + + public static float sensibleAngle(float angle) { + angle %= 360; + + if (angle > 180) angle -= 360; + if (angle < -180) angle += 360; + + return angle; + } + + public static float interpolateDegress(float prev, float current, float partialTicks) { + float difference = current - prev; + + while (difference < -180) difference += 360; + while (difference >= 180) difference -= 360; + + return prev + partialTicks * difference; + } + + public static float interpolateRadians(float prev, float current, float partialTicks) { + return (float)Math.toRadians(interpolateDegress(prev, current, partialTicks)); + } + + public static boolean compareFloats(float a, float b) { + return Math.abs(a - b) <= 0.001F; + } +} diff --git a/src/main/java/com/minelittlepony/util/MotionCompositor.java b/src/main/java/com/minelittlepony/util/MotionCompositor.java new file mode 100644 index 00000000..c7b855d7 --- /dev/null +++ b/src/main/java/com/minelittlepony/util/MotionCompositor.java @@ -0,0 +1,56 @@ +package com.minelittlepony.util; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.MathHelper; + +/** + * Calculates roll and incline for a player based on their motion vectors. + * + * @author Polyakovich - Big thank you to this dude and his meta-physics friend for working this all out. + */ +public abstract class MotionCompositor { + + /** + * Gets the angle of horizontal roll in degrees based on the player's vertical and horizontal motion. + */ + protected double calculateRoll(PlayerEntity player, double motionX, double motionY, double motionZ) { + + // since model roll should probably be calculated from model rotation rather than entity rotation... + double roll = MathUtil.sensibleAngle(player.field_6220 - player.field_6220); + double horMotion = Math.sqrt(motionX * motionX + motionZ * motionZ); + float modelYaw = MathUtil.sensibleAngle(player.field_6220); + + // detecting that we're flying backwards and roll must be inverted + if (Math.abs(MathUtil.sensibleAngle((float) Math.toDegrees(Math.atan2(motionX, motionZ)) + modelYaw)) > 90) { + roll *= -1; + } + + // ayyy magic numbers (after 5 - an approximation of nice looking coefficients calculated by hand) + + // roll might be zero, in which case Math.pow produces +Infinity. Anything x Infinity = NaN. + double pow = roll != 0 ? Math.pow(Math.abs(roll), -0.191) : 0; + + roll *= horMotion * 5 * (3.6884f * pow); + + assert !Float.isNaN((float)roll); + + return MathHelper.clamp(roll, -54, 54); + } + + /** + * Gets the angle of inclination in degrees based on the player's vertical and horizontal motion. + */ + protected double calculateIncline(PlayerEntity player, double motionX, double motionY, double motionZ) { + double dist = Math.sqrt(motionX * motionX + motionZ * motionZ); + double angle = Math.atan2(motionY, dist); + + if (!player.abilities.allowFlying) { + angle /= 2; + } + + angle = MathUtil.clampLimit(angle, Math.PI / 3); + + return Math.toDegrees(angle); + } + +}