Sound Effects and Improve Diviner
All checks were successful
Twine/pipeline/head This commit looks good
All checks were successful
Twine/pipeline/head This commit looks good
This commit is contained in:
parent
bf99c5c460
commit
1fe136b3a8
@ -53,6 +53,7 @@ Each player has a "personal" stage of an area, the highest online player's diffi
|
||||
|
||||
### Stage 5
|
||||
- Neutral Mobs Are Always Hostile
|
||||
- Mobs No Longer Have Knockback
|
||||
|
||||
### Stage 6
|
||||
- Mobs No Longer Burn In Sunlight
|
||||
|
@ -1,10 +1,13 @@
|
||||
package com.thebrokenrail.twine.component;
|
||||
|
||||
import com.thebrokenrail.twine.Twine;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.PersistentState;
|
||||
|
||||
@ -51,14 +54,32 @@ public class StageDataComponent extends PersistentState {
|
||||
|
||||
public long findEffectiveTimeOfChunk(ServerWorld world, BlockPos pos) {
|
||||
long time = 0;
|
||||
int stage = findEffectiveStageOfChunk(world, pos);
|
||||
for (Map.Entry<UUID, StageData[]> entry : data.entrySet()) {
|
||||
if (world.getPlayerByUuid(entry.getKey()) != null) {
|
||||
time = Math.max(time, entry.getValue()[findStageOfChunk(pos, entry.getValue())].time);
|
||||
int personalStage = findStageOfChunk(pos, entry.getValue());
|
||||
if (personalStage == stage) {
|
||||
time = Math.max(time, entry.getValue()[stage].time);
|
||||
}
|
||||
}
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
public Text findEffectiveCauseOfChunk(ServerWorld world, BlockPos pos) {
|
||||
int stage = findEffectiveStageOfChunk(world, pos);
|
||||
for (Map.Entry<UUID, StageData[]> entry : data.entrySet()) {
|
||||
PlayerEntity player = world.getPlayerByUuid(entry.getKey());
|
||||
if (player != null) {
|
||||
int personalStage = findStageOfChunk(pos, entry.getValue());
|
||||
if (personalStage == stage) {
|
||||
return player.getDisplayName();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new LiteralText("");
|
||||
}
|
||||
|
||||
public static StageDataComponent getFromWorld(ServerWorld world) {
|
||||
return world.getPersistentStateManager().getOrCreate(() -> new StageDataComponent(STAGE_DATA_ID), STAGE_DATA_ID);
|
||||
}
|
||||
|
@ -10,7 +10,10 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.MutableText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.ActionResult;
|
||||
@ -41,9 +44,12 @@ public class DivinerItem extends Item {
|
||||
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_1", new LiteralText(String.valueOf(stage + 1)).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_2", (stage + 1 >= Twine.STAGE_COUNT ? new TranslatableText("chat.twine.diviner_info_never") : new LiteralText(String.valueOf(Twine.STAGE_TIME - component.findEffectiveTimeOfChunk((ServerWorld) world, pos)))).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_3", new LiteralText(String.valueOf(effectiveStage + 1)).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_4", new LiteralText(String.valueOf(personalData[effectiveStage].x)).formatted(Formatting.WHITE), new LiteralText(String.valueOf(personalData[effectiveStage].z)).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_5", (effectiveStage + 1 >= Twine.STAGE_COUNT ? new TranslatableText("chat.twine.diviner_info_never") : new LiteralText(String.valueOf(Twine.STAGE_TIME - personalData[effectiveStage].time))).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_3", component.findEffectiveCauseOfChunk((ServerWorld) world, pos).shallowCopy().formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_4", new LiteralText(String.valueOf(effectiveStage + 1)).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_5", new LiteralText(String.valueOf(personalData[effectiveStage].x)).formatted(Formatting.WHITE), new LiteralText(String.valueOf(personalData[effectiveStage].z)).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
user.sendMessage(new TranslatableText("chat.twine.diviner_info_6", (effectiveStage + 1 >= Twine.STAGE_COUNT ? new TranslatableText("chat.twine.diviner_info_never") : new LiteralText(String.valueOf(Twine.STAGE_TIME - personalData[effectiveStage].time))).formatted(Formatting.WHITE)).formatted(Formatting.YELLOW), false);
|
||||
|
||||
world.playSound(null, user.getBlockPos(), SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.PLAYERS, 1f, 1f);
|
||||
|
||||
stack.damage(1, user, e -> e.sendToolBreakStatus(hand));
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.screen.SimpleNamedScreenHandlerFactory;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@ -88,6 +89,8 @@ public class MixinBoatEntity implements BoatUtil {
|
||||
setChestItem(newStack);
|
||||
|
||||
newMode.triggerAdvancement((ServerPlayerEntity) player);
|
||||
|
||||
player.getEntityWorld().playSound(null, ((BoatEntity) (Object) this).getBlockPos(), SoundEvents.ITEM_ARMOR_EQUIP_GENERIC, ((BoatEntity) (Object) this).getSoundCategory(), 1f, 1f);
|
||||
}
|
||||
info.setReturnValue(ActionResult.SUCCESS);
|
||||
} else if (player.isSneaking()) {
|
||||
|
@ -41,9 +41,10 @@
|
||||
|
||||
"chat.twine.diviner_info_1": "Effective Stage Of Area: %s",
|
||||
"chat.twine.diviner_info_2": "Effective Stage Of Area Increases In: %s Ticks",
|
||||
"chat.twine.diviner_info_3": "Personal Stage Of Area: %s",
|
||||
"chat.twine.diviner_info_4": "Personal Center Of Area: X: %s Z: %s",
|
||||
"chat.twine.diviner_info_5": "Personal Stage Of Area Increases In: %s Ticks",
|
||||
"chat.twine.diviner_info_3": "Effective Stage Of Area Caused By: %s",
|
||||
"chat.twine.diviner_info_4": "Personal Stage Of Area: %s",
|
||||
"chat.twine.diviner_info_5": "Personal Center Of Area: X: %s Z: %s",
|
||||
"chat.twine.diviner_info_6": "Personal Stage Of Area Increases In: %s Ticks",
|
||||
"chat.twine.diviner_info_never": "Never",
|
||||
|
||||
"block.twine.creative_url_opener": "Creative URL Opener",
|
||||
|
Reference in New Issue
Block a user