Skip to content

Commit

Permalink
Fix: Clippy & fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
Snowiiii committed Aug 20, 2024
1 parent b7a4b9d commit 49dfc18
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 109 deletions.
38 changes: 11 additions & 27 deletions pumpkin-inventory/src/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,6 @@ pub struct PlayerInventory {
selected: usize,
}

pub struct Hotbar<'a>(&'a mut [Option<Item>;9]);

impl Hotbar<'_> {
fn get_mut(&mut self, index: usize) -> &mut Option<Item> {
&mut self.0[index]
}
}

pub struct Armor<'a>(&'a mut [Option<Item>; 4]);



impl Default for PlayerInventory {
fn default() -> Self {
Self::new()
Expand All @@ -42,15 +30,15 @@ impl PlayerInventory {
selected: 0,
}
}

/// Set the contents of an item in a slot
///
/// ## Slot
/// The slot according to https://wiki.vg/Inventory#Player_Inventory
///
///
/// ## Item
/// The optional item to place in the slot
///
///
/// ## Item allowed override
/// An override, which when enabled, makes it so that invalid items, can be placed in slots they normally can't.
/// Useful functionality for plugins in the future.
Expand All @@ -60,17 +48,13 @@ impl PlayerInventory {
// TODO: Add crafting check here
self.crafting_output = item
}
1..=4 => {
self.crafting[slot-1] = item
}
1..=4 => self.crafting[slot - 1] = item,
5..=8 => {
match item {
None => {
self.armor[slot-4] = None
},
None => self.armor[slot - 4] = None,
Some(item) => {
// TODO: Replace asserts with error handling
match slot-5 {
match slot - 5 {
0 => {
assert!(item.is_helmet() || item_allowed_override);
self.armor[0] = Some(item);
Expand All @@ -87,28 +71,28 @@ impl PlayerInventory {
assert!(item.is_boots() || item_allowed_override);
self.armor[3] = Some(item)
}
_ => unreachable!()
_ => unreachable!(),
}
}
}
}
9..=44 => {
self.items[slot-9] = item;
self.items[slot - 9] = item;
}
45 => {
self.offhand = item;
}
_ => unreachable!()
_ => unreachable!(),
}
}

pub fn set_selected(&mut self, slot: usize) {
assert!((0..9).contains(&slot));
self.selected = slot;
}

pub fn held_item(&self) -> Option<&Item> {
debug_assert!((0..9).contains(&self.selected));
self.items[self.selected+36-9].as_ref()
self.items[self.selected + 36 - 9].as_ref()
}
}
11 changes: 4 additions & 7 deletions pumpkin-protocol/src/slot.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use crate::VarInt;
use pumpkin_world::item::Item;
use serde::{
de::{self, SeqAccess, Visitor},
Deserialize,
};
use pumpkin_world::item::Item;
use crate::VarInt;

#[derive(Debug, Clone)]
#[allow(dead_code)]
Expand All @@ -16,9 +16,6 @@ pub struct Slot {
components_to_remove: Option<Vec<VarInt>>,
}




impl<'de> Deserialize<'de> for Slot {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
Expand Down Expand Up @@ -91,7 +88,7 @@ impl From<Slot> for Item {
fn from(slot: Slot) -> Self {
Item {
item_count: slot.item_count.0.try_into().unwrap(),
item_id: slot.item_id.unwrap().0.try_into().unwrap()
item_id: slot.item_id.unwrap().0.try_into().unwrap(),
}
}
}
}
13 changes: 8 additions & 5 deletions pumpkin-world/src/global_registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const REGISTRY_JSON: &str = include_str!("../assets/registries.json");
#[derive(serde::Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct RegistryElement {
default: Option<String>,
pub entries: HashMap<String, HashMap<String,u32>>,
pub entries: HashMap<String, HashMap<String, u32>>,
}

lazy_static! {
Expand All @@ -23,7 +23,7 @@ pub fn get_protocol_id(category: &str, entry: &str) -> u32 {
.expect("Invalid Category in registry")
.entries
.get(entry)
.map(|p|p.get("protocol_id").unwrap())
.map(|p| p.get("protocol_id").unwrap())
.expect("No Entry found")
}

Expand All @@ -37,9 +37,12 @@ pub fn get_default<'a>(category: &str) -> Option<&'a str> {
}

pub fn find_minecraft_id(category: &str, protocol_id: u32) -> Option<&str> {
REGISTRY.get(category)?
REGISTRY
.get(category)?
.entries
.iter()
.find(|(_,other_protocol_id)|*other_protocol_id.get("protocol_id").unwrap()==protocol_id)
.map(|(id,_)|id.as_str())
.find(|(_, other_protocol_id)| {
*other_protocol_id.get("protocol_id").unwrap() == protocol_id
})
.map(|(id, _)| id.as_str())
}
92 changes: 37 additions & 55 deletions pumpkin-world/src/item/item_categories.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,72 +4,54 @@ impl Item {
pub fn is_helmet(&self) -> bool {
[
// Leather
856,
// Netherite
876,
// Turtle helmet
794,
// Chainmail
860,
// Diamond
868,
// Gold
872,
// Iron
864
].contains(&self.item_id)
856, // Netherite
876, // Turtle helmet
794, // Chainmail
860, // Diamond
868, // Gold
872, // Iron
864,
]
.contains(&self.item_id)
}

pub fn is_chestplate(&self) -> bool {
[
// Leather
857,
// Netherite
877,
// Chainmail
861,
// Diamond
869,
// Gold
873,
// Iron
865,
// Elytra
857, // Netherite
877, // Chainmail
861, // Diamond
869, // Gold
873, // Iron
865, // Elytra
773,
].contains(&self.item_id)
]
.contains(&self.item_id)
}

pub fn is_leggings(&self) -> bool {
[
// Leather
858,
// Netherite
878,
// Chainmail
862,
// Diamond
870,
// Gold
874,
// Iron
866
].contains(&self.item_id)
858, // Netherite
878, // Chainmail
862, // Diamond
870, // Gold
874, // Iron
866,
]
.contains(&self.item_id)
}

pub fn is_boots(&self) -> bool {
[
// Leather
859,
// Netherite
879,
// Chainmail
863,
// Diamond
871,
// Gold
875,
// Iron
867
].contains(&self.item_id)
859, // Netherite
879, // Chainmail
863, // Diamond
871, // Gold
875, // Iron
867,
]
.contains(&self.item_id)
}
}
}
2 changes: 1 addition & 1 deletion pumpkin-world/src/item/item_registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ pub struct ItemElement {
}

lazy_static! {
pub static ref ITEMS: HashMap<String, ItemElement> =
pub static ref ITEMS: HashMap<String, ItemElement> =
serde_json::from_str(ITEMS_JSON).expect("Could not parse items.json registry.");
}

Expand Down
2 changes: 1 addition & 1 deletion pumpkin-world/src/item/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
mod item_registry;
mod item_categories;
mod item_registry;
pub use item_registry::ITEMS;
#[derive(serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
Expand Down
34 changes: 21 additions & 13 deletions pumpkin/src/client/player_packet.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
use std::f32::consts::PI;

use crate::{
commands::{handle_command, CommandSender},
entity::player::{ChatMode, GameMode, Hand},
server::Server,
util::math::wrap_degrees,
};
use num_traits::FromPrimitive;
use pumpkin_entity::EntityId;
use pumpkin_protocol::{
Expand All @@ -17,12 +23,6 @@ use pumpkin_protocol::{
use pumpkin_text::TextComponent;
use pumpkin_world::block::BlockFace;
use pumpkin_world::global_registry;
use crate::{
commands::{handle_command, CommandSender},
entity::player::{ChatMode, GameMode, Hand},
server::Server,
util::math::wrap_degrees,
};

use super::{Client, PlayerConfig};

Expand Down Expand Up @@ -317,14 +317,24 @@ impl Client {
}
pub fn handle_player_action(&mut self, _server: &mut Server, _player_action: SPlayerAction) {}

pub fn handle_use_item_on(&mut self, server: &mut Server, use_item_on: SUseItemOn) {
pub fn handle_use_item_on(&mut self, server: &mut Server, use_item_on: SUseItemOn) {
let location = use_item_on.location;
let face = BlockFace::from_i32(use_item_on.face.0).unwrap();
let location = WorldPosition(location.0 + face.to_offset());
if let Some(item) = self.player.as_ref().unwrap().inventory.held_item() {
let minecraft_id = global_registry::find_minecraft_id(global_registry::ITEM_REGISTRY,item.item_id).expect("All item ids are in the global registry");
if let Ok(block_state_id) = pumpkin_world::block::block_registry::block_id_and_properties_to_block_state_id(minecraft_id,None) {
server.broadcast_packet(self, &CBlockUpdate::new(location, (block_state_id as i32).into()));
let minecraft_id =
global_registry::find_minecraft_id(global_registry::ITEM_REGISTRY, item.item_id)
.expect("All item ids are in the global registry");
if let Ok(block_state_id) =
pumpkin_world::block::block_registry::block_id_and_properties_to_block_state_id(
minecraft_id,
None,
)
{
server.broadcast_packet(
self,
&CBlockUpdate::new(location, (block_state_id as i32).into()),
);
}
}
}
Expand All @@ -339,9 +349,7 @@ impl Client {
}

pub fn handle_set_creative_slot(&mut self, _server: &mut Server, packet: SSetCreativeSlot) {
let inventory = &mut self.player.as_mut()
.unwrap()
.inventory;
let inventory = &mut self.player.as_mut().unwrap().inventory;

inventory.set_slot(packet.slot as usize, packet.clicked_item.to_item(), false);
}
Expand Down

0 comments on commit 49dfc18

Please sign in to comment.