summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-06-06 17:30:02 +0200
committernea <romangraef@gmail.com>2022-06-06 17:30:14 +0200
commitbedfa3b4d0507e0de4beb522285a18ecef80ea2a (patch)
treebaad8e208aaf56648a9b317cbdbd18e838758dee /src
parent8429ee15a20c38fe3a094bebf4ba4eb51c2cedd7 (diff)
downloadmorbingtime-bedfa3b4d0507e0de4beb522285a18ecef80ea2a.tar.gz
morbingtime-bedfa3b4d0507e0de4beb522285a18ecef80ea2a.tar.bz2
morbingtime-bedfa3b4d0507e0de4beb522285a18ecef80ea2a.zip
More morbing
Diffstat (limited to 'src')
-rw-r--r--src/main/java/moe/nea/morbing/BloodFluid.java5
-rw-r--r--src/main/java/moe/nea/morbing/ModItems.java16
-rw-r--r--src/main/java/moe/nea/morbing/Morbing.java24
-rw-r--r--src/main/java/moe/nea/morbing/MorbingClient.java1
-rw-r--r--src/main/java/moe/nea/morbing/MorbingTimeStatus.java1
-rw-r--r--src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java16
-rw-r--r--src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java38
-rw-r--r--src/main/resources/assets/morbing/lang/en_us.json6
-rw-r--r--src/main/resources/assets/morbing/models/item/morbarrow.json6
-rw-r--r--src/main/resources/assets/morbing/models/item/morbsyringe.json6
-rw-r--r--src/main/resources/assets/morbing/morbingskin.pngbin0 -> 2938 bytes
-rw-r--r--src/main/resources/assets/morbing/sounds.json8
-rw-r--r--src/main/resources/assets/morbing/sounds/itsmorbingtime.oggbin0 -> 50815 bytes
-rw-r--r--src/main/resources/assets/morbing/textures/item/morbarrow.pngbin0 -> 224 bytes
-rw-r--r--src/main/resources/assets/morbing/textures/item/morbsyringe.pngbin0 -> 263 bytes
-rw-r--r--src/main/resources/data/morbing/recipes/morbarrow.json20
-rw-r--r--src/main/resources/morbing.mixins.json2
17 files changed, 143 insertions, 6 deletions
diff --git a/src/main/java/moe/nea/morbing/BloodFluid.java b/src/main/java/moe/nea/morbing/BloodFluid.java
index bbda497..4583967 100644
--- a/src/main/java/moe/nea/morbing/BloodFluid.java
+++ b/src/main/java/moe/nea/morbing/BloodFluid.java
@@ -74,7 +74,7 @@ public abstract class BloodFluid extends FlowableFluid {
BlockPos abovePos = pos.up();
BlockState aboveState = world.getBlockState(abovePos);
FluidState aboveFluid = aboveState.getFluidState();
- if (state.getFluidState().getFluid() != this && !aboveFluid.isEmpty() && matchesType(aboveFluid.getFluid())) {
+ if (state.getFluidState().isEmpty() && !aboveFluid.isEmpty() && matchesType(aboveFluid.getFluid())) {
return getFlowing(aboveFluid.getLevel(), true);
}
if (state.getFluidState().getFluid() == getFlowing()) {
@@ -86,6 +86,9 @@ public abstract class BloodFluid extends FlowableFluid {
return getFlowing(1, false);
}
}
+ if (state.getFluidState().getFluid() == getStill()) {
+ return getFlowing(1, false);
+ }
return state.getFluidState();
}
diff --git a/src/main/java/moe/nea/morbing/ModItems.java b/src/main/java/moe/nea/morbing/ModItems.java
index ba7a5c7..9403198 100644
--- a/src/main/java/moe/nea/morbing/ModItems.java
+++ b/src/main/java/moe/nea/morbing/ModItems.java
@@ -2,8 +2,16 @@ package moe.nea.morbing;
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
+import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
+import net.minecraft.text.TranslatableText;
import net.minecraft.util.registry.Registry;
+import net.minecraft.world.World;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
public class ModItems extends ModRegistry<Item> {
@@ -14,5 +22,11 @@ public class ModItems extends ModRegistry<Item> {
public static ModItems INSTANCE = new ModItems();
public Item morbItem = register("morbitem", new Item(new FabricItemSettings()));
public Item morbArrow = register("morbarrow", new MorbArrowItem(new FabricItemSettings()));
- public Item morbSyringe = register("morbsyringe", new Item(new FabricItemSettings()));
+ public Item morbSyringe = register("morbsyringe", new Item(new FabricItemSettings()) {
+ @Override
+ public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
+ super.appendTooltip(stack, world, tooltip, context);
+ tooltip.add(new TranslatableText("tooltip.morbing.morbyringe"));
+ }
+ });
}
diff --git a/src/main/java/moe/nea/morbing/Morbing.java b/src/main/java/moe/nea/morbing/Morbing.java
index adf52b0..6743112 100644
--- a/src/main/java/moe/nea/morbing/Morbing.java
+++ b/src/main/java/moe/nea/morbing/Morbing.java
@@ -1,10 +1,17 @@
package moe.nea.morbing;
+import moe.nea.morbing.mixin.AccessorBrewingRecipeRegistry;
import net.fabricmc.api.ModInitializer;
+import net.fabricmc.fabric.api.event.player.AttackEntityCallback;
import net.minecraft.entity.effect.StatusEffectInstance;
import net.minecraft.fluid.FlowableFluid;
import net.minecraft.potion.Potion;
+import net.minecraft.potion.Potions;
+import net.minecraft.sound.SoundEvent;
+import net.minecraft.state.property.Properties;
+import net.minecraft.util.ActionResult;
import net.minecraft.util.Identifier;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
public class Morbing implements ModInitializer {
@@ -17,6 +24,8 @@ public class Morbing implements ModInitializer {
public static FlowableFluid STILL_BLOOD = new BloodFluid.Still();
public static FlowableFluid FLOWING_BLOOD = new BloodFluid.Flowing();
+ public static SoundEvent ITSMORBINTIME_SOUND = new SoundEvent(Morbing.identifier("itsmorbintime"));
+ public static Potion MORB_POTION = new Potion(new StatusEffectInstance(MorbingTimeStatus.INSTANCE, 600));
@Override
public void onInitialize() {
@@ -25,8 +34,19 @@ public class Morbing implements ModInitializer {
ModEntities.INSTANCE.registerAll();
Registry.register(Registry.FLUID, Morbing.identifier("blood"), STILL_BLOOD);
Registry.register(Registry.FLUID, Morbing.identifier("blood_flowing"), FLOWING_BLOOD);
- Registry.register(Registry.STATUS_EFFECT, Morbing.identifier("morbingtime"), new MorbingTimeStatus());
- Registry.register(Registry.POTION, Morbing.identifier("morbingtime"), new Potion(new StatusEffectInstance(new MorbingTimeStatus(), 60)));
+ Registry.register(Registry.STATUS_EFFECT, Morbing.identifier("morbingtime"), MorbingTimeStatus.INSTANCE);
+ Registry.register(Registry.POTION, Morbing.identifier("morbingtime"), MORB_POTION);
+
+ AttackEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> {
+ StatusEffectInstance morbingStatus = player.getStatusEffect(MorbingTimeStatus.INSTANCE);
+ if (morbingStatus != null && morbingStatus.getDuration() > 0) {
+ BlockPos blockPos = entity.getBlockPos();
+ world.setBlockState(blockPos, ModBlocks.INSTANCE.bloodFluidBlock.getDefaultState().with(Properties.LEVEL_15, 1));
+ }
+ return ActionResult.PASS;
+ });
+ Registry.register(Registry.SOUND_EVENT, Morbing.identifier("itsmorbintime"), ITSMORBINTIME_SOUND);
+ AccessorBrewingRecipeRegistry.registerPotionRecipe(Potions.AWKWARD, ModItems.INSTANCE.morbSyringe, MORB_POTION);
System.out.println("It's Morbing time!");
}
}
diff --git a/src/main/java/moe/nea/morbing/MorbingClient.java b/src/main/java/moe/nea/morbing/MorbingClient.java
index fca79e2..6325bd6 100644
--- a/src/main/java/moe/nea/morbing/MorbingClient.java
+++ b/src/main/java/moe/nea/morbing/MorbingClient.java
@@ -18,6 +18,5 @@ public class MorbingClient implements ClientModInitializer {
));
BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), Morbing.STILL_BLOOD, Morbing.FLOWING_BLOOD);
EntityRendererRegistry.register(ModEntities.INSTANCE.morbArrowEntityEntityType, MorbArrowEntityRenderer::new);
-
}
}
diff --git a/src/main/java/moe/nea/morbing/MorbingTimeStatus.java b/src/main/java/moe/nea/morbing/MorbingTimeStatus.java
index 2ab865a..657f91f 100644
--- a/src/main/java/moe/nea/morbing/MorbingTimeStatus.java
+++ b/src/main/java/moe/nea/morbing/MorbingTimeStatus.java
@@ -8,4 +8,5 @@ public class MorbingTimeStatus extends StatusEffect {
super(StatusEffectCategory.NEUTRAL, 0x10_10_10);
}
+ public static MorbingTimeStatus INSTANCE = new MorbingTimeStatus();
}
diff --git a/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java b/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java
new file mode 100644
index 0000000..994b72e
--- /dev/null
+++ b/src/main/java/moe/nea/morbing/mixin/AccessorBrewingRecipeRegistry.java
@@ -0,0 +1,16 @@
+package moe.nea.morbing.mixin;
+
+import net.minecraft.item.Item;
+import net.minecraft.potion.Potion;
+import net.minecraft.recipe.BrewingRecipeRegistry;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Invoker;
+
+@Mixin(BrewingRecipeRegistry.class)
+public interface AccessorBrewingRecipeRegistry {
+ @Invoker(value = "registerPotionRecipe")
+ static void registerPotionRecipe(Potion input, Item item, Potion output) {
+ throw new IllegalStateException("Mixin not applied");
+ }
+
+}
diff --git a/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java b/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java
new file mode 100644
index 0000000..553414e
--- /dev/null
+++ b/src/main/java/moe/nea/morbing/mixin/MixinAbstractClientPlayerEntity.java
@@ -0,0 +1,38 @@
+package moe.nea.morbing.mixin;
+
+import com.mojang.authlib.GameProfile;
+import moe.nea.morbing.Morbing;
+import moe.nea.morbing.MorbingTimeStatus;
+import net.minecraft.client.network.AbstractClientPlayerEntity;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+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;
+
+@Mixin(AbstractClientPlayerEntity.class)
+public abstract class MixinAbstractClientPlayerEntity extends PlayerEntity {
+
+ public MixinAbstractClientPlayerEntity(World world, BlockPos pos, float yaw, GameProfile profile) {
+ super(world, pos, yaw, profile);
+ }
+
+ @Inject(method = "hasSkinTexture", at = @At("HEAD"), cancellable = true)
+ public void onHasSkinTexture(CallbackInfoReturnable<Boolean> cir) {
+ if (hasStatusEffect(MorbingTimeStatus.INSTANCE)) {
+ cir.setReturnValue(true);
+ }
+ }
+
+ @Inject(method = "getSkinTexture", at = @At("HEAD"), cancellable = true)
+ public void onGetSkinTexture(CallbackInfoReturnable<Identifier> cir) {
+ if (hasStatusEffect(MorbingTimeStatus.INSTANCE)) {
+ cir.setReturnValue(Morbing.identifier("morbingskin.png"));
+ }
+ }
+
+
+}
diff --git a/src/main/resources/assets/morbing/lang/en_us.json b/src/main/resources/assets/morbing/lang/en_us.json
index a2326b4..492218d 100644
--- a/src/main/resources/assets/morbing/lang/en_us.json
+++ b/src/main/resources/assets/morbing/lang/en_us.json
@@ -1,3 +1,7 @@
{
- "effect.morbing.morbingtime": "Morbing"
+ "effect.morbing.morbingtime": "Morbing",
+ "item.morbing.morbarrow": "Empty Morbing Syringe",
+ "item.morbing.morbsyringe": "Filled Morbing Syringe",
+ "tooltip.morbing.morbyringe": "It's Morbing Time!",
+ "subtitles.morbing.itsmorbintime": "It's Morbing Time!"
}
diff --git a/src/main/resources/assets/morbing/models/item/morbarrow.json b/src/main/resources/assets/morbing/models/item/morbarrow.json
new file mode 100644
index 0000000..afef195
--- /dev/null
+++ b/src/main/resources/assets/morbing/models/item/morbarrow.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "morbing:item/morbarrow"
+ }
+}
diff --git a/src/main/resources/assets/morbing/models/item/morbsyringe.json b/src/main/resources/assets/morbing/models/item/morbsyringe.json
new file mode 100644
index 0000000..857df53
--- /dev/null
+++ b/src/main/resources/assets/morbing/models/item/morbsyringe.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/handheld",
+ "textures": {
+ "layer0": "morbing:item/morbsyringe"
+ }
+}
diff --git a/src/main/resources/assets/morbing/morbingskin.png b/src/main/resources/assets/morbing/morbingskin.png
new file mode 100644
index 0000000..2ed2e06
--- /dev/null
+++ b/src/main/resources/assets/morbing/morbingskin.png
Binary files differ
diff --git a/src/main/resources/assets/morbing/sounds.json b/src/main/resources/assets/morbing/sounds.json
new file mode 100644
index 0000000..a4a82e6
--- /dev/null
+++ b/src/main/resources/assets/morbing/sounds.json
@@ -0,0 +1,8 @@
+{
+ "itsmorbintime": {
+ "subtitle": "subtitles.morbing.itsmorbintime",
+ "sounds": [
+ "morbing:itsmorbingtime"
+ ]
+ }
+}
diff --git a/src/main/resources/assets/morbing/sounds/itsmorbingtime.ogg b/src/main/resources/assets/morbing/sounds/itsmorbingtime.ogg
new file mode 100644
index 0000000..ed92232
--- /dev/null
+++ b/src/main/resources/assets/morbing/sounds/itsmorbingtime.ogg
Binary files differ
diff --git a/src/main/resources/assets/morbing/textures/item/morbarrow.png b/src/main/resources/assets/morbing/textures/item/morbarrow.png
new file mode 100644
index 0000000..dfc0a37
--- /dev/null
+++ b/src/main/resources/assets/morbing/textures/item/morbarrow.png
Binary files differ
diff --git a/src/main/resources/assets/morbing/textures/item/morbsyringe.png b/src/main/resources/assets/morbing/textures/item/morbsyringe.png
new file mode 100644
index 0000000..6f324d7
--- /dev/null
+++ b/src/main/resources/assets/morbing/textures/item/morbsyringe.png
Binary files differ
diff --git a/src/main/resources/data/morbing/recipes/morbarrow.json b/src/main/resources/data/morbing/recipes/morbarrow.json
new file mode 100644
index 0000000..8e44539
--- /dev/null
+++ b/src/main/resources/data/morbing/recipes/morbarrow.json
@@ -0,0 +1,20 @@
+{
+ "type": "minecraft:crafting_shaped",
+ "pattern": [
+ " I ",
+ " G ",
+ " G "
+ ],
+ "key": {
+ "I": {
+ "item": "minecraft:iron_ingot"
+ },
+ "G": {
+ "tag": "c:glass_blocks"
+ }
+ },
+ "result": {
+ "item": "morbing:morbarrow",
+ "count": 16
+ }
+}
diff --git a/src/main/resources/morbing.mixins.json b/src/main/resources/morbing.mixins.json
index cdbc1ea..fd3eb43 100644
--- a/src/main/resources/morbing.mixins.json
+++ b/src/main/resources/morbing.mixins.json
@@ -3,8 +3,10 @@
"package": "moe.nea.morbing.mixin",
"compatibilityLevel": "JAVA_16",
"client": [
+ "MixinAbstractClientPlayerEntity"
],
"mixins": [
+ "AccessorBrewingRecipeRegistry"
],
"injectors": {
"defaultRequire": 1